LeetCode 複製帶隨機指標的鍊錶

2021-09-11 06:41:13 字數 1783 閱讀 3736

給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。

要求返回這個鍊錶的深拷貝。

示例:

輸入:

,"val":2},"random":,"val":1}

解釋:節點 1 的值是 1,它的下乙個指標和隨機指標都指向節點 2 。

節點 2 的值是 2,它的下乙個指標指向 null,隨機指標指向它自己。

/*

// definition for a node.

class node

node(int _val, node* _next, node* _random)

};*/

class solution

mymap[null] = null;

phead = head;

//再次掃瞄鍊錶,複製next、random指標

方法二:

① 首先掃瞄鍊錶,複製所有的節點,並將複製的節點插入到原先節點的後面。

②再次掃瞄節點,複製所有原節點random指標域、

③再將兩個鍊錶拆開

演算法示意圖

初始狀態

執行第一步複製節點

執行第二步複製random指標域

執行第三步拆分鍊錶。

//掃瞄鍊錶,複製所有的節點

while (phead != null)

//再次掃瞄節點,複製random節點

phead = head;

while (phead != null)

else

phead = phead->next->next;

} //在將兩個鍊錶拆開

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,隨機指標指向它自己。你必須返回給定頭的拷貝作為對轉殖列表的...