19. Remove Nth Node From End of List
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
if not head:
return None
l = 0
curr = head
while curr:
l += 1
curr = curr.next
l -= n
# tihs is important because sometimes the expected remove node is the head node.
dummy = ListNode(-1)
dummy.next = head
curr = dummy
while l > 0:
l -= 1
curr = curr.next
curr.next = curr.next.next
return dummy.nextLast updated