Description Link to heading
19.remove-nth-node-from-end-of-list
Solution Link to heading
For convenience, we create a virtual head node pre
, pre->next = head
.
We will use two pointers fast
and slow
. First, fast
go head for n
times, then fast
and slow
go ahead together. When fast
arrives at last node, slow
points to the last node of the node we need delete.
Code Link to heading
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode *pre = new ListNode(0, head);
ListNode *fast = pre, *slow = pre;
for (int i = 0; i < n; i++) {
fast = fast->next;
}
while (fast->next != nullptr) {
fast = fast->next;
slow = slow->next;
}
slow->next = slow->next->next;
return pre->next;
}
};