複製客製化鏈結串列 Copy List w/ Random Pointer_Leetcode #138

閱讀時間約 3 分鐘

題目敘述

題目會給定一個帶有Random Pointer的鏈結串列,要求我們實體複製deep copy這條鏈結串列,並且輸出副本的根結點。

註:
傳統的Linked list鏈結串列只會有next pointer,題目的客製化鏈結串列除了next pointer之外,還多了一個random pointer,會隨機指向串列中的其他節點。


詳細的題目可在這裡看到


測試範例

Example 1:

raw-image
Input: head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
Output: [[7,null],[13,0],[11,4],[10,2],[1,0]]

Example 2:

raw-image
Input: head = [[1,1],[2,1]]
Output: [[1,1],[2,1]]

Example 3:

raw-image

Input: head = [[3,null],[3,0],[3,null]]
Output: [[3,null],[3,0],[3,null]]

約束條件

Constraints:

  • 0 <= n <= 1000
  • -104 <= Node.val <= 104
  • Node.random is null or is pointing to some node in the linked list.

演算法

先建造一個迴圈,從起始點開始拜訪串列,建立一個字典,以id(node)物件編號為key值,紀錄每個對應的拷貝節點。

接著再建造一個迴圈,從起始點開始拜訪串列,依序補上拷貝節點對應的next pointer 和 randon pointer

最後回傳拷貝串列的起始點,即為所求。


程式碼

class Solution:
 def copyRandomList(self, head: 'Node') -> 'Node':

  if not head:
   return None

  dict_of_copy = {}

  cur = head
  while cur:
   dict_of_copy[ id(cur) ] = Node(x=cur.val, next=None, random=None)
   cur = cur.next

  cur = head
  while cur:

   if cur.next:
    dict_of_copy[ id(cur) ].next = dict_of_copy[ id(cur.next) ]

   if cur.random:
    dict_of_copy[ id(cur) ].random = dict_of_copy[ id(cur.random) ]

   cur = cur.next

  return dict_of_copy[ id(head) ]

複雜度分析

時間複雜度:

O( n ) 兩輪都是線性掃描,從起始點拜訪到最後一個節點。

空間複雜度:

O( n ) 字典佔用的空間就是備份節點的總數目,剛好和原本的串列一樣長。


關鍵知識點

其實和複製傳統linked list很相似,只是多了一個random pointer要複製

考量到舊串列和新串列節點的一對一映射關係,聯想到可以用字典dictionary來維護,以id(node)物件編號鍵值,去儲存對應的拷貝節點。


Reference:

[1] Python O(n) by mirror node 85%+ [w/ Visualization] - Copy List with Random Pointer - LeetCode

avatar-img
88會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目會給定我們一個串列,和一個n值,要求我們刪除尾巴數來的第n個節點。 例如 1->2->3->4->5 和 給定n值=2,要求我們刪除尾巴數來的第2個節點。 尾巴數來的第2個節點是4,刪除之後,更新連結,輸出答案如下 1->2->3->5
題目會給我們兩條已經從小到大排序好的串列,要求我們依照從小到大的順序,合併這兩條串列。
題目的輸入會給我們一個串列,要求我們從頭到尾反轉整個串列。 例子: 如果輸入是1 -> 2 -> 3,那麼輸出就是 3 -> 2 -> 1
題目會給定我們一個串列,和一個n值,要求我們刪除尾巴數來的第n個節點。 例如 1->2->3->4->5 和 給定n值=2,要求我們刪除尾巴數來的第2個節點。 尾巴數來的第2個節點是4,刪除之後,更新連結,輸出答案如下 1->2->3->5
題目會給我們兩條已經從小到大排序好的串列,要求我們依照從小到大的順序,合併這兩條串列。
題目的輸入會給我們一個串列,要求我們從頭到尾反轉整個串列。 例子: 如果輸入是1 -> 2 -> 3,那麼輸出就是 3 -> 2 -> 1
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
身為犬派的初心,讓花令梁小鋪的創辦人呂珮綸女士決定開啟斜槓人生,除了本身在外商擔任數位硬軟體專員的工作之外,更經營直播事業和現在的花令梁小舖,到底是怎樣的人生轉折和動力,讓一個人明明下班可以躺平,卻還要努力經營第二專長?
Thumbnail
個性化的禪繞課程能更近妳的學習需求,從放鬆到放下自我懷疑,從掌握圖樣結合與「放下構圖」的技巧。通過一對一的精緻教學,妳能夠更深入地認識禪繞圖樣、提升創作能力,並在輕鬆愉快的氛圍中享受藝術的魅力。只要妳對禪繞畫有興趣,都能在這樣的課程中找到自我表達的空間,最終創作出和諧且富有個性的作品。
Thumbnail
阡寶傢俱提供廣泛的臺中傢俱定製復刻傢俱服務,根據客戶喜好打造各式家居環境,包括復刻沙發與椅子、桌類與櫃體、床架與配件。我們的專業團隊將與您合作,讓您的家居空間煥然一新。定製復刻傢俱的時間長短視乎設計複雜性、材料準備及製作工藝。透過我們的訂製流程,最終獲得將是完美融入您家居環境的獨特傢俱。
Thumbnail
馬麻我其實是一個手機殼狂人 從一開始使用三星到拿蘋果 看到手機殼都招架不住 就想買 (一個給手機常常換衣服的概念XD)  但一般販售的手機殼都是制式的樣式 自從養了米豆跟米穀後 就想把身邊所有東西 都換成與他們有關的 像是時時刻刻陪著我的感覺
Thumbnail
題目會給定一個帶有Random Pointer的鏈結串列,要求我們實體複製deep copy這條鏈結串列,並且輸出副本的根結點。
Thumbnail
圖:歐氯科技整治水土資源有成並多次獲獎(圖/呂哲瑋提供) 【李婉如/ 報導】廿逾年前美國無線電公司RCA在台設廠,卻長期傾倒有毒廢料,導致廠區土壤及地下水遭受嚴重污染,爆發廠內所用三氯乙烯長期毒害員工,成為台灣求償人數最多、擴散效應最大的工殤案件,類似的工業污染案例在今日的台灣仍然層出不窮。 生
Thumbnail
【李婉如/ 報導】誕生於2002年的美國加州True Religion,品牌設計師深受90年代的風潮啟蒙,透過奢華細膩作工與表態性感不凡的剪裁元素,成為頂級時尚丹寧的代名詞,2021年起更與潮牌Supreme合作推出聯名商品,展現品牌多元風貌。今年品牌為了致敬90年代經典的性感主義與街頭風潮,特別推
Thumbnail
記得先點+追蹤喔❤️ 【復刻未來・AI 海洋名畫特展】 活動期間:2022/10/5 ~ 2023/3/31 票價資訊:Xpark 門票
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
身為犬派的初心,讓花令梁小鋪的創辦人呂珮綸女士決定開啟斜槓人生,除了本身在外商擔任數位硬軟體專員的工作之外,更經營直播事業和現在的花令梁小舖,到底是怎樣的人生轉折和動力,讓一個人明明下班可以躺平,卻還要努力經營第二專長?
Thumbnail
個性化的禪繞課程能更近妳的學習需求,從放鬆到放下自我懷疑,從掌握圖樣結合與「放下構圖」的技巧。通過一對一的精緻教學,妳能夠更深入地認識禪繞圖樣、提升創作能力,並在輕鬆愉快的氛圍中享受藝術的魅力。只要妳對禪繞畫有興趣,都能在這樣的課程中找到自我表達的空間,最終創作出和諧且富有個性的作品。
Thumbnail
阡寶傢俱提供廣泛的臺中傢俱定製復刻傢俱服務,根據客戶喜好打造各式家居環境,包括復刻沙發與椅子、桌類與櫃體、床架與配件。我們的專業團隊將與您合作,讓您的家居空間煥然一新。定製復刻傢俱的時間長短視乎設計複雜性、材料準備及製作工藝。透過我們的訂製流程,最終獲得將是完美融入您家居環境的獨特傢俱。
Thumbnail
馬麻我其實是一個手機殼狂人 從一開始使用三星到拿蘋果 看到手機殼都招架不住 就想買 (一個給手機常常換衣服的概念XD)  但一般販售的手機殼都是制式的樣式 自從養了米豆跟米穀後 就想把身邊所有東西 都換成與他們有關的 像是時時刻刻陪著我的感覺
Thumbnail
題目會給定一個帶有Random Pointer的鏈結串列,要求我們實體複製deep copy這條鏈結串列,並且輸出副本的根結點。
Thumbnail
圖:歐氯科技整治水土資源有成並多次獲獎(圖/呂哲瑋提供) 【李婉如/ 報導】廿逾年前美國無線電公司RCA在台設廠,卻長期傾倒有毒廢料,導致廠區土壤及地下水遭受嚴重污染,爆發廠內所用三氯乙烯長期毒害員工,成為台灣求償人數最多、擴散效應最大的工殤案件,類似的工業污染案例在今日的台灣仍然層出不窮。 生
Thumbnail
【李婉如/ 報導】誕生於2002年的美國加州True Religion,品牌設計師深受90年代的風潮啟蒙,透過奢華細膩作工與表態性感不凡的剪裁元素,成為頂級時尚丹寧的代名詞,2021年起更與潮牌Supreme合作推出聯名商品,展現品牌多元風貌。今年品牌為了致敬90年代經典的性感主義與街頭風潮,特別推
Thumbnail
記得先點+追蹤喔❤️ 【復刻未來・AI 海洋名畫特展】 活動期間:2022/10/5 ~ 2023/3/31 票價資訊:Xpark 門票