Given the head
of a linked list, remove the nth
node from the end of the list and return its head.
Example 1:
Input: head = [1,2,3,4,5], n = 2 Output: [1,2,3,5]
Example 2:
Input: head = [1], n = 1 Output: []
Example 3:
Input: head = [1,2], n = 1 Output: [1]
Constraints:
sz
.1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz
Follow up: Could you do this in one pass?
The main concept to remember in this question is how we can use two pointers, i.e slow and fast pointers, to find the node that needs to be deleted. Once that is found then it is an easy task to delete the node.
Time Complexity: O(n)
Space Complexity: O(1)