19. Remove Nth Node From End of List
Problem description:
Given a linked list, remove the n-th node from the end of list and return its head.
Example:1
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Follow up:
Could you do this in one pass?
Solution:
Since we’re going to do it in one pass, we need to find a way to create a gap of n+1
. The reason is because, we will traverse to the end of the linked list, and we can use another pointer n+1
steps slower to find the node before n
th node from end of list.
For example:
1 | /** |
time complexity: $O(n)$
space complexity: $O(1)$
reference: