Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head.
Example
Given linked list: 1->2->3->4->5->null, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5->null.
Note
The minimum number of nodes in list is n.
Challenge
O(n) time
Solution: One Pass using Fast Slow Pointers
O(n) time, O(1) space
ListNode removeNthFromEnd(ListNode head, int n) { if (head == null) { return null; } ListNode slow = head; ListNode fast = slow; for (int i = 0; i < n; i++) { if (fast.next == null) { return head.next; } fast = fast.next; } while (fast.next != null) { fast = fast.next; slow = slow.next; } slow.next = slow.next.next; return head; }