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

2021-09-28 14:43:49 字數 974 閱讀 5285

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

說明:給定的 n 保證是有效的。

示例:

給定乙個鍊錶:1-

>2-

>3-

>4-

>

5, 和 n =

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

->2-

>3-

>

5.

找到倒數第n個結點的前乙個結點,讓該結點的後繼為倒數第n個結點的後繼

子問題:找到倒數第n個結點的前驅

1.有兩個引用,第乙個引用指向首節點,然後走n步

2.第二個結點指向首節點,此時兩結點之間隔了n-1個結點,保持這樣的距離,共同向後移動

3.當第乙個引用到達尾節點時,第二個引用離尾節點有n-1個結點,

4.此時第二個結點為倒數第n+1個結點,即倒數第n個結點的前驅

特殊情況:

1.鍊錶只有乙個結點或者為空鍊錶,直接返回空即可;

2.鍊錶的長度剛好等於n,即刪除首節點,第乙個引用從頭結點開始移動n步後,

第乙個引用移動到了尾節點的下乙個,即此時第乙個引用為空,

出現第乙個在移動n步後為空的情況時,說明要刪除的是首節點,直接將首節點定為首節點的下乙個即可

public

static listnode removenthfromend

(listnode head,

int n)

listnode cur=head;

listnode pre=head;

for(

int i=

0;i(cur==null)

while

(cur.next!=null)

pre.next=pre.next.next;

return head;

}

刪除鍊錶倒數第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...