三指针
先弄一个 从头结点出发 走n-1步
然后 再弄一个 从头结点 与第一个指针一起向前走一步
然后 再弄一个 从头结点出发 while 第一个.next !=none时 一起走
当第一个.next == None时
让第三个的next指向第三个的next.next
删除第二个
即可
# 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:
faker = ListNode(head.val)
faker.next = head
pre = faker
k = n - 1
for i in range(n - 1):
pre = pre.next
tobedeleted = faker
tobedeleted = tobedeleted.next
pre = pre.next
back = faker
while pre.next != None:
pre = pre.next
tobedeleted = tobedeleted.next
back = back.next
back.next = back.next.next
del tobedeleted
return faker.next