""" 19. Remove Nth Node From End of List Difficulty: Medium https://leetcode.com/problems/remove-nth-node-from-end-of-list/ ────────────────────────────────────────────────── Given the head of a linked list, remove the n^th 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: • The number of nodes in the list is sz. • 1 <= sz <= 30 • 0 <= Node.val <= 100 • 1 <= n <= sz Follow up: Could you do this in one pass? """ # 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 | None, n: int) -> ListNode | None: dummy = ListNode(0) dummy.next = head fast = dummy for _ in range(n): if fast.next is None: return head fast = fast.next slow = dummy while fast.next is not None: slow = slow.next fast = fast.next slow.next = slow.next.next return dummy.next