Remove Nth Node From End of List

Solution
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummy = ListNode(0, head)
        left = dummy
        right = dummy

        for i in range(n + 1):
            right = right.next
            
        while right is not None:
            left = left.next
            right = right.next
            
        left.next = left.next.next
        
        return dummy.next

Time Complexity

O(N)

Space Complexity

O(1)