Concept Flow - Remove Nth Node from End of List
Create dummy node pointing to head
Set two pointers: first and second at dummy
Move first pointer n+1 steps ahead
Move first and second pointers together until first reaches end
Second pointer now before target node
Remove target node by changing second.next
Return dummy.next as new head
We use two pointers spaced n+1 apart to find the node before the target, then remove the target node.