AlgoPrecision

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
12headcurrentnext243648

Time

O(n)

Space

O(1)

Step Note

Use two pointers with a gap of 2.

Details
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
}