Leetcode 19. Remove Nth Node From End of List
Problem statement :
Given the head of a linked list, remove the nth node from the end of the list and return its head.
Examples :
Example 1:
Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]
Example 2:
Input: head = [1], n = 1
Output: []
Constraints:
The number of nodes in the list is sz. 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n <= sz
Solution :
# using recursion
class Solution:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
def removeNode(node, n):
if not node:
return 0
cnt = removeNode(node.next, n)
if cnt == n:
node.next = node.next.next
return cnt + 1
return head.next if removeNode(head, n) == n else head