Skip to content

Remove Nthfrom End

LeetCode Problem

# https://leetcode.com/problems/remove-nth-node-from-end-of-list/
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        prev = ListNode(0, head)  # to return
        left = prev
        right = head
        # right reacheds n (3)
        while n > 0:
            right = right.next
            n -= 1

        # left reaches 3 and right reaches null (why 3 and not 4 : because left = prev (dummy ptr))
        while right:
            left = left.next
            right = right.next

        # delete
        left.next = left.next.next
        return prev.next  # 1->2->3->5