19. Remove Nth Node From End of List

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummyHead = new ListNode(-1, head);

// d *
// f
// s

// d * *
// f
// s

ListNode fast = dummyHead, slow = dummyHead;
for (int i = 0; i < n; i++) {
fast = fast.next;
}
while (fast.next != null) {
fast = fast.next;
slow = slow.next;
}

slow.next = slow.next.next;
return dummyHead.next;
}
}

References

19. Remove Nth Node From End of List
剑指 Offer II 021. 删除链表的倒数第 n 个结点