複製客製化鏈結串列 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

86會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目會給定我們一個串列,和一個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
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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 門票