leetcode力扣刷题打卡
题目:剑指 Offer II 021. 删除链表的倒数第 n 个结点
描述:给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
思路:
1、双指针,让快指针先走n步,然后快慢指针一起动,直到快指针走到头,此时慢指针指向next的next;
2、注意删除头结点的情况。
原代码##
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode *dummy = new ListNode(0, head);
ListNode *fast = head, *slow = dummy;
while (n --) fast = fast -> next;
while (fast) {
fast = fast -> next;
slow = slow -> next;
}
slow ->next = slow -> next -> next;
return dummy->next;
}
};