給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。
要求返回這個鍊錶的深拷貝。
做這道題分為三步:
假設我們要複製的鍊錶如下:
橙色的為隨機指標
遍歷原鍊錶的每乙個結點,複製新結點,插到原鍊錶的後邊
遍歷原鍊錶的每乙個節點,進行新結點random的設定
把一條鍊錶拆分為原煉表和新鍊錶
**如下:
class
solution
/** * 1. 建立新結點插到老結點後邊
* 2. 設定 random
* 3. 拆開
*/// 第一步
node cur = head;
while
(cur != null)
// 第二步
cur = head;
while
(cur != null)
else
cur = cur.next.next;
}// 第三步
cur = head;
node rhead = head.next;
while
(cur != null)
cur = cur.next;
}return rhead;
}}
LeetCode 138 複製帶隨機指標的鍊錶
1.題目 2.解答 第一次遍歷鍊錶的時候,複製舊鍊錶的節點值建立乙個新的鍊錶,同時定義乙個 unordered map 作為雜湊表,雜湊表的鍵為舊鍊錶的節點指標,值為新鍊錶的節點指標。然後,第二次遍歷鍊錶,訪問舊鍊錶節點的隨機指標,然後以此為鍵從 map 中取出對應的新鍊錶節點指標,這也就是當前新鍊...
Leetcode 138 複製帶隨機指標的鍊錶
題目 給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。要求返回這個鍊錶的深拷貝。示例 輸入 got eof at end of input 1 next at position 9 ref 2 val 2 rand ref 2 val 1 my defini...
LeetCode 138 複製帶隨機指標的鍊錶
給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。要求返回這個鍊錶的深拷貝。示例 解釋 節點 1 的值是 1,它的下乙個指標和隨機指標都指向節點 2 節點 2 的值是 2,它的下乙個指標指向 null,隨機指標指向它自己。你必須返回給定頭的拷貝作為對轉殖列表的...