快慢指针,设两个指针:
- 右指针先走n步
- 左指针随着右指针一起移动,直到右指针的下一个节点为空。
- 删除左值针指向的下一个节点
# Definit1ion 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:
root = ListNode(0)
root.next = head
left = right = root
while n:
right = right.next
n -= 1
while right.next:
right = right.next
left = left.next
left.next = left.next.next
return root.next