刪除鍊錶的倒數第N個結點 leetcode19

2022-06-08 07:33:12 字數 1196 閱讀 8061

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

高階:你能嘗試使用一趟掃瞄實現嗎?

示例 1:

輸入:head = [1,2,3,4,5], n = 2

輸出:[1,2,3,5]

解析:對鍊錶操作時,一種常用的技巧:新增乙個啞節點,使它的next指向鍊錶的頭結點。

這樣,就不需要對頭結點進行特殊的判斷了。

方法一:

先從頭節點進行一次遍歷,得到鍊錶的長度l。

隨後,再從頭節點對鍊錶進行一次遍歷,當遍歷到第 l-n+1個結點時,就是我們需要刪除的節點。

為了與題目中的n保持一致,節點的編號從1開始,頭節點為編號1的節點。

從啞節點開始遍歷 l-n+1個結點,當遍歷到l-n+1個節點時,它的下乙個節點就是我們需要刪除的節點,

這樣我們只需要修改一次指標,就能完成刪除操作。

//列印節點

public

static

void

printnode(listnode head)

}//刪除鍊錶倒數第n個結點

public

static listnode removenthfromend(listnode head, int

n) cur.next =cur.next.next;

listnode ans =dummy.next;

return

ans;

}//獲取鍊錶長度

public

static

intgetlength(listnode head)

return

length;

}}//

結點class

listnode

listnode(

int val)

listnode(

int val, listnode next)

}

刪除鍊錶的倒數第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 的後繼節點。...