- 1 ListNode* removeNthFromEnd(ListNode* head, int n) {
- 2 ListNode* dummyHead = new ListNode(0);
- 3 dummyHead->next = head;
- 4 ListNode *slow = dummyHead, *fast = dummyHead;
- 5 for (int i = 0; i < n + 1; ++i) {
- 6 fast = fast->next;
- 7 }
- 8
- 9 while (fast != NULL) {
- 10 slow = slow->next;
- 11 fast = fast->next;
- 12 }
- 13
- 14 ListNode* delNode = slow->next;
- 15 slow->next = delNode->next;
- 16 delete delNode;
- 17
- 18 ListNode* retNode = dummyHead->next;
- 19 delete dummyHead;
- 20
- 21 return retNode;
- 22 }