代码随想录算法训练营第六期四天 24 两两交换链表中的节点 19.删除链表的倒数第N个节点 02.07.链表相交 142.环形链表II
今天继续复习了链表的基础知识。以及基础的结构体的使用。
链表通常情况下分为带头节点的和不带头节点的。一般来说都是使用带头节点的。这样在操作手节点时比较统一,方便,好理解。
24 两两交换链表中的节点
跳到下一个节点时,是已经改过两个位置了。temp=node1;而不是=node2
struct ListNode* swapPairs(struct ListNode* head){
struct ListNode dummyHead;
dummyHead.next=head;
struct ListNode* temp=&dummyHead;
while(temp->next&&temp->next->next){
struct ListNode* node1=temp->next;
struct ListNode* node2=temp->next->next;
temp->next=node2;
node1->next=node2->next;
node2->next=node1;
temp=node1;
}
return dummyHead.next;
19.删除链表的倒数第N个节点
仍然是经典的快慢指针思维,一点就透
struct ListNode* swapPairs(struct ListNode* head){
struct ListNode dummyHead;
dummyHead.next=head;
struct ListNode* temp=&dummyHead;
while(temp->next&&temp->next->next){
struct ListNode* node1=temp->next;
struct ListNode* node2=temp->next->next;
temp->next=node2;
node1->next=node2->next;
node2->next=node1;
temp=node1;
}
return dummyHead.next;
}
02.07.链表相交
思路清晰按着carl哥给的思路写就OK。
142.环形链表II
最后一题思路打呼妙哉。建议深得快慢指针精髓,建议可以记一下