刪除鍊錶的倒數第N個節點

2021-09-10 06:34:07 字數 1090 閱讀 8230

1. 問題描述

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

示例:

給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

說明:

給定的 n 保證是有效的。

2. **實現

方法一:兩次遍歷

這個問題可以容易地簡化成另乙個問題:刪除從列表開頭數起的第 (l - n + 1) 個結點,其中 l 是鍊錶的長度。

所以第一次遍歷算出鍊錶長度,第二次遍歷找到第 l-n 個結點。

使用啞結點可以處理刪除頭結點的情況。

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

length -= n;

p = newhead;

while(length > 0)

p.next = p.next.next;

return newhead.next;

}}

方法二:一次遍歷

使用兩個指標,第乙個指標從鍊錶的開頭向前移動 n+1 步,而第二個指標將從鍊錶的開頭出發。現在,這兩個指標被 n 個結點分開。我們通過同時移動兩個指標向前來保持這個恆定的間隔,直到第乙個指標到達最後乙個結點。此時第二個指標將指向從最後乙個結點數起的第 n 個結點。

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

second.next = second.next.next;

return newhead.next;

}}

刪除鍊錶倒數第N個節點

1.問題 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.2.演算法 暴力破解法 先計算得出鍊錶的長度m,然後將鍊錶長度和所給倒數字置相減,即loc m n 1,得出刪除節點的前...

刪除鍊錶倒數第n個節點

leetcode 題目 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.note n 鍊錶長度時,刪除頭節點 n 0時,不做任何操作。當第乙個指標first 比第二個指標領先n步,然後...

刪除鍊錶的倒數第N個節點

與查詢鍊錶的倒數第n個節點對比只改動了一行 查到倒數第n個節點後,將該節點的後續指標p1.next p1.next.next 即可 package 鍊錶中 public class nthnodefromendoflist return m 刪除倒數第n個節點 param args public s...