李代桃僵 刪除節點 Delete Node in a Linked List_Leetcode #237

閱讀時間約 4 分鐘

題目敘述

題目給定一個鏈結串列中的節點Node,要求我們從鏈結串列中刪除該節點。

題目保證該節點不是tail node。

題目要求我們in-place原位操作。


原本的英文題目敘述


測試範例

Example 1:

Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.

Example 2:

Input: head = [4,5,1,9], node = 1
Output: [4,5,9]
Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.

約束條件

Constraints:

  • The number of the nodes in the given list is in the range [2, 1000].

節點總數目介於2~1000之間。

  • -1000 <= Node.val <= 1000

節點值介於-1000~1000之間。

  • The value of each node in the list is unique.

每個節點值都不同。

  • The node to be deleted is in the list and is not a tail node.

目標節點絕對存在,而且不是tail node。


演算法 李代桃僵

其實這題算是有變化,需要轉個彎思考的題目。

一般來說,Linked list的題目會先給head node,再給目標節點或目標值進行操作。

但是這題只有給目標節點,要求我們刪除目標節點。

困難點就在於,要如何更新linkage 新的連接?


原本輸入的樣子是

... -> 前一個節點 -> 目標節點 -> 後一個節點 -> ...

刪除之後,應該要變成

... -> 前一個節點 -> 後一個節點 -> ...


但是題目沒有給head node,根本沒辦法知道 前一個節點是誰

因此,就有了替代的解法,李代桃僵(俗稱的替死鬼),原本是要刪除目標節點,但是我們改成刪除後一個節點,並且拷貝後一個節點的值到我自己身上,這樣的形狀就會和原本的相同


原本輸入的樣子是

... -> 前一個節點 -> 目標節點 -> 後一個節點 -> ...

李代桃僵,刪除後一個節點,變成

... -> 前一個節點 -> 目標節點(擁有原本後一個節點的節點值) -> ...


示意圖

raw-image



程式碼 李代桃僵

class Solution:
def deleteNode(self, node):

# locate victim node
victim_node = node.next

# overwrite node's value by victim node's value
node.val = victim_node.val

# break the linkage of victim node
node.next = victim_node.next

# release victim node
del victim_node

return

複雜度分析

時間複雜度: O(1)

只涉及兩個節點的操作,為常數時間。


空間複雜度: O(1)

所需要的都是臨時變數,為常數級別O(1)。


關鍵知識點

困難點就在於,要如何更新linkage 新的連接?

題目沒有給head node,根本沒辦法知道 前一個節點是誰

因此,就有了替代的解法,李代桃僵(俗稱的替死鬼),原本是要刪除目標節點,但是我們改成刪除後一個節點,並且拷貝後一個節點的值到我自己身上,這樣的形狀就會和原本的相同


Reference

[1] Delete Node in a Linked List - LeetCode

avatar-img
88會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
給定一個Linked list鏈結串列的Head node, 請判斷這條Linked list是否存在環路(Cycle)? 如果有環路,回傳True。 如果沒有,回傳False。
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
題目敘述 題目會給定一個鏈結串列的起始點,要求我們把其中區間總和為0的部分刪除掉。 例如 1→ 2 → -2 → 3 → 4 裡面有一段是2 → -2 區間總和為零,所以簡化刪除後變成 1→ 3 → 4 題目的原文敘述 測試範例 Example 1: Input: head
題目敘述 題目會給我們一個鏈結串列的起點head,要求我們找出這個串列的中點。 註: 如果串列長度是偶數,就回傳中間偏右的那個節點。 例如: 1 -> 2 -> 3 回傳中點為2 1 -> 2 -> 3 -> 4 ->5 -> 6 回傳中點為4 詳細的題目可在這裡看到 測試範例
題目會給定一個帶有Random Pointer的鏈結串列,要求我們實體複製deep copy這條鏈結串列,並且輸出副本的根結點。
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
給定一個Linked list鏈結串列的Head node, 請判斷這條Linked list是否存在環路(Cycle)? 如果有環路,回傳True。 如果沒有,回傳False。
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
題目敘述 題目會給定一個鏈結串列的起始點,要求我們把其中區間總和為0的部分刪除掉。 例如 1→ 2 → -2 → 3 → 4 裡面有一段是2 → -2 區間總和為零,所以簡化刪除後變成 1→ 3 → 4 題目的原文敘述 測試範例 Example 1: Input: head
題目敘述 題目會給我們一個鏈結串列的起點head,要求我們找出這個串列的中點。 註: 如果串列長度是偶數,就回傳中間偏右的那個節點。 例如: 1 -> 2 -> 3 回傳中點為2 1 -> 2 -> 3 -> 4 ->5 -> 6 回傳中點為4 詳細的題目可在這裡看到 測試範例
題目會給定一個帶有Random Pointer的鏈結串列,要求我們實體複製deep copy這條鏈結串列,並且輸出副本的根結點。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
最近《周處除三害》在Netflix上線啦!一起來看看周處除三害有哪些電影亮點?電影結局如何吧!
Thumbnail
偉大 蓮花生大士曾開示:「供養龍族很重要,所以我傳下了許多供養龍族的法門(例如:龍王煙供法、龍王寶瓶等)。未來的弟子應當依照時節供養龍族眾生,不然未來的地、水等災害將極為可怖。」若有幸具足福德因緣得能修持殊勝《龍王煙供法》,將龍藥煙供藉由修法儀軌加持轉化為遍滿虛空的妙欲受用,來供養龍族眾生,使龍族的
Thumbnail
每年藏曆十月十五日是 吉祥天母節,藏語稱為「白拉日卓」。在藏傳佛教的寺廟都會舉辦大大小小與 吉祥天母有關的法會。在十五日清晨,來自各地的藏族善男信女,依據傳統會紛紛聚集到大昭寺的門口,向 吉祥天母敬獻卡達,開始一年一度的「吉祥天母節」。 吉祥天母是示現女身的第一大空行護法,具極大加持力,靈感異常,
Thumbnail
「觀音山 孝親‧報恩‧祈福‧迴向 中元普度盂蘭盆法會」將於9月9日、10日,於臺中健行國小盛大隆重舉辦。凡所有成為本場法會功德主,將為您所發心之金額圓滿平均地護持當日法會壇城布置、軟硬體設備、供養三寶薈供品、供花、供燈、蔬食打齋,法會籌備及宣傳等各項所需,一日之中圓滿建立功德,福慧滿盈。
李樹跟桃樹相鄰,本來可能讓桃樹枯死的害蟲,跑到李樹那邊,讓李樹枯死了。看起來像是個事故,但是有可能是個故事。 做為敵戰計之一,李代桃僵是與敵方旗鼓相當時所用的計謀。 大勢所趨,在一定會發生損害的時候,就需要有所取捨,因為什麼都捨不得,就什麼都得不到⋯⋯
Thumbnail
#小朋友的廚藝節目-主題歌開播。 之前我們寫的主題歌《我們是小小廚神》竟然在《小鮮廚在我家》第三季播出了,好開心♥️本來等到花兒都謝了。 在2022年11月3日上午《小鮮廚 在我家》第三季開播發布會在中國兒童中心舉行。 第三季節目已於11月5日在央視網上線首播。 與眾不同的節目型態,兒童視角和專業
Thumbnail
裝修浴室廚房天花板(PVC)有一定的施工順序與流程 ,五大流程詳細解說一次公開
Thumbnail
這個故事沒有結尾;或者說,主角們從頭到尾都不曾安定下來,如同標題的「躊躇」二字。小說從丈夫突然自殺開始,妻子帶著兒子前往台東檳榔村,遇見與部落發生摩擦的藝術家。
Thumbnail
文、圖/金洹苑提供   2019年創立的「金洹苑」,店內裝潢採取日式的典雅樸質,以京都感濃厚的復古木質調打造,並將到日本必吃的燒肉與台灣人熱愛的火鍋結合,主打精緻「燒肉鍋物放題」,每人只要1080元即可同時享有頂級的日式鍋物與燒肉吃到飽,店內提供超過60種的高檔食材,嚴選Prime等級的冷藏濕
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
最近《周處除三害》在Netflix上線啦!一起來看看周處除三害有哪些電影亮點?電影結局如何吧!
Thumbnail
偉大 蓮花生大士曾開示:「供養龍族很重要,所以我傳下了許多供養龍族的法門(例如:龍王煙供法、龍王寶瓶等)。未來的弟子應當依照時節供養龍族眾生,不然未來的地、水等災害將極為可怖。」若有幸具足福德因緣得能修持殊勝《龍王煙供法》,將龍藥煙供藉由修法儀軌加持轉化為遍滿虛空的妙欲受用,來供養龍族眾生,使龍族的
Thumbnail
每年藏曆十月十五日是 吉祥天母節,藏語稱為「白拉日卓」。在藏傳佛教的寺廟都會舉辦大大小小與 吉祥天母有關的法會。在十五日清晨,來自各地的藏族善男信女,依據傳統會紛紛聚集到大昭寺的門口,向 吉祥天母敬獻卡達,開始一年一度的「吉祥天母節」。 吉祥天母是示現女身的第一大空行護法,具極大加持力,靈感異常,
Thumbnail
「觀音山 孝親‧報恩‧祈福‧迴向 中元普度盂蘭盆法會」將於9月9日、10日,於臺中健行國小盛大隆重舉辦。凡所有成為本場法會功德主,將為您所發心之金額圓滿平均地護持當日法會壇城布置、軟硬體設備、供養三寶薈供品、供花、供燈、蔬食打齋,法會籌備及宣傳等各項所需,一日之中圓滿建立功德,福慧滿盈。
李樹跟桃樹相鄰,本來可能讓桃樹枯死的害蟲,跑到李樹那邊,讓李樹枯死了。看起來像是個事故,但是有可能是個故事。 做為敵戰計之一,李代桃僵是與敵方旗鼓相當時所用的計謀。 大勢所趨,在一定會發生損害的時候,就需要有所取捨,因為什麼都捨不得,就什麼都得不到⋯⋯
Thumbnail
#小朋友的廚藝節目-主題歌開播。 之前我們寫的主題歌《我們是小小廚神》竟然在《小鮮廚在我家》第三季播出了,好開心♥️本來等到花兒都謝了。 在2022年11月3日上午《小鮮廚 在我家》第三季開播發布會在中國兒童中心舉行。 第三季節目已於11月5日在央視網上線首播。 與眾不同的節目型態,兒童視角和專業
Thumbnail
裝修浴室廚房天花板(PVC)有一定的施工順序與流程 ,五大流程詳細解說一次公開
Thumbnail
這個故事沒有結尾;或者說,主角們從頭到尾都不曾安定下來,如同標題的「躊躇」二字。小說從丈夫突然自殺開始,妻子帶著兒子前往台東檳榔村,遇見與部落發生摩擦的藝術家。
Thumbnail
文、圖/金洹苑提供   2019年創立的「金洹苑」,店內裝潢採取日式的典雅樸質,以京都感濃厚的復古木質調打造,並將到日本必吃的燒肉與台灣人熱愛的火鍋結合,主打精緻「燒肉鍋物放題」,每人只要1080元即可同時享有頂級的日式鍋物與燒肉吃到飽,店內提供超過60種的高檔食材,嚴選Prime等級的冷藏濕