題目:
給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。
注意事項
鍊錶中的節點個數大於等於n
您在真實的面試中是否遇到過這個題?
yes
樣例給出鍊錶1->2->3->4->5->null
和 n = 2.
刪除倒數第二個節點之後,這個鍊錶將變成1->2->3->5->null.
思路:
這道題的思路十分奇特,那就是為了找倒數第n個結點,從第乙個結點開始遍歷,同時n--,然後t和q再同時遍歷,直到最後,q->next就是倒數第n個結點。
**:/**
* definition of listnode
* class listnode
* }*/
class solution
if(t==null)
return head->next;
while(t->next!=null)
listnode *a=q->next;
q->next=a->next;
return head;}};
感想:我一開始的想法是從頭開始遍歷,先算出結點個數,再算出倒數第n個結點在正數的位數,再刪掉這個結點,這樣這個結點的前驅和後繼也是十分清楚明了的,但是我寫完這樣的**後,並不能過,是超時還是爆記憶體的原因忘了。然後我又想建立迴圈鍊錶來解決它,但是我發現這樣的話有和一開始的想法一樣了,還是不行。至於這種演算法也是在我想了好久未果後在其他部落格上看到的,一開始還不信,自己拿了好多例子,又用數學證明後才自己又敲了出來。此外,這幾道題我還總是忘了判斷head==null等即極端情況。
刪除鍊錶的倒數第N個結點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點 給定乙個鍊錶 1 2 3 4 5,和 n 2 當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5 class solution listnode dummynode newlistnode 1 dummynode.next head ...
刪除鍊錶的倒數第 N 個結點
給你乙個鍊錶,刪除鍊錶的倒數第 n 個結點,並且返回鍊錶的頭結點。快指標start 慢指標end 此題目需要刪除乙個節點,並且返回新的鍊錶,使用快慢指標法,先移動快指標n個身位,兩個指標相差n 1個節點 再將兩個指標一起移動,當快指標的next為null時,證明已經移動到鍊錶末端,並指向最後乙個節點...
鍊錶 刪除鍊錶的倒數第 N 個結點
記錄 於leetcode 在對鍊錶進行操作時,一種常用的技巧是新增乙個啞節點 dummy node 它的next 指標指向鍊錶的頭節點。這樣一來,我們就不需要對頭節點進行特殊的判斷了。例如,在本題中,如果我們要刪除節點 y,我們需要知道節點 y 的前驅節點 x,並將 x 的指標指向 y 的後繼節點。...