Linked List Visualizer
Pointer Reversal
Trace prev, current, and next pointers as each node rewires its next reference to reverse the list in place.
O(n) time / O(1) space
Time
O(n)
Space
O(1)
Step Note
Use two pointers with a gap of 2.
function removeNthFromEnd(head: ListNode | null, n: number) {
const dummy = new ListNode(0, head)
let slow = dummy
let fast = dummy
for (let i = 0; i < n; i++) fast = fast.next
while (fast.next !== null) {
slow = slow.next
fast = fast.next
}
slow.next = slow.next.next
return dummy.next
}