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

2022-08-11 20:54:12 字數 655 閱讀 5951

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

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

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

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

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

鍊錶型別的題畫圖來解比較清晰,對於單鏈表來說,刪除節點的方法是找到需要刪除的節點的前乙個節點,將前乙個節點的指標指向待刪節點所指的下乙個節點,即可完成刪除操作。所以在這道題中,要找到倒數第n+1個節點。

在鍊錶的刪除操作中,有可能會刪掉頭節點,所以需要先定義乙個虛擬節點,讓這個虛擬節點指向頭節點。

由於只進行一次掃瞄,可以定義兩個指標,讓其中乙個先向前走n步,然後讓兩個指標同時向前走,直到第乙個指標走到最末尾的節點終止。這樣,第二個指標所指的節點就是倒數第n+1個節點。

找到倒數第n+1個節點之後就可以進行刪除操作。最後要注意返回的是虛擬節點的下乙個節點,而不是頭節點。

c++**如下:

class

solution

while(first ->next)

second -> next = second -> next ->next;

return dummy ->next;

}};

LeetCode 19 鍊錶(160)

1 如圖,鍊錶是一種非常常用的資料結構 煉表頭 指向第乙個鍊錶結點的指標 鍊錶結點 鍊錶中的每乙個元素,包括 1 當前結點的資料,2 下乙個結點的位址 鍊錶尾 不再指向其他結點的結點,其位址部分放乙個null,表示鍊錶到此結束。2 鍊錶可以動態地建立 動態地申請記憶體空間 int pint new ...

鍊錶 LeetCode19刪除鍊錶中的第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?分析 看到這個問題,第一反應,先求長度,再找節點,看一下高階,有...

Leetcode 19 刪除鍊錶的第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...