这一题应该是剑指offer上的,用两个指针,新建一个新的结点指向head,p1,p2分别指向dumy,先让p2移动n 步,然后p1 p2一起移动到尾部,这样p1指向的位置是需要删除节点的前一个结点,代码如下:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @return a ListNode
def removeNthFromEnd(self, head, n):
dummy=ListNode(0); dummy.next=head
p1=p2=dummy
for i in range(n): p1=p1.next
while p1.next:
p1=p1.next; p2=p2.next
p2.next=p2.next.next
return dummy.next