给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
res=ListNode(0)
res.next=head
l1=res
l2=res
for i in range(n):
l1=l1.next#先执行n次
while l1.next:#执行L-n次
l1=l1.next
l2=l2.next #变相执行n次
l2.next=l2.next.next #已到第n个节点,跨过去就是了
return res.next
#前面l1,l2都是遍历res,真正对同一个链表res操作是最后一步 ,击败99.97%
#注意在python中的赋值问题
#下面的是正的两次遍历法,当l2=res.next时会报错,说None没有贡献next,所以把l2=res
res=ListNode(0)
res.next=head
l1=res.next
l2=res
l3=res
L=1
while l1.next:
l1=l1.next
L=L+1
i=0
while i <L-n:
i=i+1
l2=l2.next
l2.next=l2.next.next
return l3.next