Trace 1 → 2 → 3 → 4 → 5 with n = 2.
Create dummy: dummy → 1 → 2 → 3 → 4 → 5.
Initialize: slow = dummy, fast = dummy.
Advance fast by n + 1 = 3 steps: fast = 2.
Move both until fast is null:
slow = 1,fast = 3slow = 2,fast = 4slow = 3,fast = 5slow = 3,fast = null(stop)
slow is at node 3. Remove next: slow.next = slow.next.next.
Result: 1 → 2 → 3 → 5.
One pass through the list. time. Only two pointers. space.