刪除鍊錶中倒數第n個結點

2021-07-29 20:36:55 字數 812 閱讀 4053

題目:

給定乙個鍊錶,刪除鍊錶中倒數第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 的後繼節點。...