Leetcode做題日記:19. 刪除連結串列的倒數第N個節點(PYTHON)
阿新 • • 發佈:2019-01-01
給定一個連結串列,刪除連結串列的倒數第 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