from __future__ import annotations
class ListNode:
def __init__(self, val: int = 0, next: ListNode | None = None):
self.val = val
self.next = next
class Solution1:
def removeNthFromEnd(self, head: ListNode | None, n: int) -> ListNode | None:
l = r = d = ListNode(next=head)
for _ in range(n - 1):
r = r.next
while r.next and r.next.next is not None:
l, r = l.next, r.next
l.next = l.next.next
return d.next
class Solution:
def removeNthFromEnd(self, head: ListNode | None, n: int) -> ListNode | None:
l = r = head
for _ in range(n):
r = r.next
if r is None:
return head.next
while r.next:
l, r = l.next, r.next
l.next = l.next.next
return head