链表day4
24 两两交换链表中的节点
稍微有些许繁琐,记住步骤即可
class Solution{
public:ListNode* swapPairs(ListNode* head){ListNode* dummyHead = new ListNode(0);dummyHead->next = head;ListNode* cur = dummyHead;while(cur->next && cur->next->next){ListNode* tmp = cur->next;ListNode* tmp1 = cur->next->next->next;cur->next = cur->next->next;cur->next->next = tmp;cur->next->next->next = tmp1;cur = cur->next->next;//移动两位}ListNode* result = dummyHead->next;delete dummyHead;return result;}
};
19 删除倒数第N个结点
这里就是需要考虑到如果删除的是头结点,怎么办,那就得使用头结点。
class Solution{
public:ListNode* removeNthFromEnd(ListNode* head,int n){ListNode* dummyHead = new ListNode(0); ///考虑删除的是头结点的问题dummyHead->next = head;ListNode* left = dummyHead;ListNode* right = dummyHead;while(n--&&right!=nullptr){right = right->next;}right = right->next;//这里需要多走一步 快指针多走一步while(right!=nullptr){left = left->next;right = right->next;}ListNode* tmp = left->next;left->next = left->next->next;delete tmp;return dummyHead->next;}
};