摘要: 1、链表相交是两个指针相同而非值相同。 class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *p=headA,*q=headB; int len1=0, 阅读全文
posted @ 2023-03-17 16:12 我的秘密小屋 阅读(14) 评论(0) 推荐(0)
摘要: 设一快一慢指针,快指针先走N步,等快指针到达最后一个元素时,此时慢指针恰好在倒数第N个元素的前一个元素,然后删掉就可以了。 class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* p 阅读全文
posted @ 2023-03-17 15:53 我的秘密小屋 阅读(13) 评论(0) 推荐(0)
摘要: 两两交换链表中的节点: 先把一个链表分为两个链表,再把两个链表组成一个链表。 注意最后可能有一个链表有剩余,但此时另一个链表的指针已经到了NULL,要再遍历一遍/提前记录(感觉有点麻烦)。 class Solution { public: ListNode* swapPairs(ListNode* 阅读全文
posted @ 2023-03-17 15:27 我的秘密小屋 阅读(12) 评论(0) 推荐(0)
摘要: 1、反转链表的常见几种: 头插法;双指针方法; 头插法创建一个新节点再头插比较合适;如果在原来的链表头插法,要对第一个元素的next在适当的时候变为NULL。 双指针的方法比较好用,用两个指针一前一后实现链表反转。 双指针: class Solution { public: ListNode* re 阅读全文
posted @ 2023-03-17 14:16 我的秘密小屋 阅读(15) 评论(0) 推荐(0)