# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
dummy = ListNode(0)
dummy.next = head
pre, cur = dummy, dummy
for _ in range(n):
pre = pre.next
while pre.next is not None:
pre = pre.next
cur = cur.next
cur.next = cur.next.next if cur.next is not None else None
return dummy.next
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
if head.next is None or k == 0:
return head
i = 0
pre = cur = head
while pre is not None:
if k > i:
i += 1
pre = pre.next
else:
pre = pre.next
cur = cur.next
return cur if k == i else None