leetcode 138 複製帶隨機指標的鍊錶

2021-10-08 16:52:04 字數 838 閱讀 2155

難度:中等

題目要求是複製原鍊錶,需要另外新建鍊錶,返回新建鍊錶的頭結點。

但原鍊錶結構較為複雜,從左往右遍歷原煉表時,不能在複製節點時,事先知道當前節點的next和random域,所以可以先複製節點並儲存下來,在後續遍歷過程中再補齊該節點的next和radom域

儲存時利用雜湊map《原鍊錶節點,複製節點》,遍歷原鍊錶過程中,利用原鍊錶節點去map中檢視,前文遍歷時是否複製過該節點:沒有,則建立複製節點,存入map;有,則直接更新複製節點對應域。

class

solution

mp[tmp]

->next = mp[tmp-

>next]

;//修改複製後的tmp->next的值

if(tmp-

>random&&mp.

find

(tmp-

>random)

== mp.

end())

mp[tmp]

->random = mp[tmp-

>random]

;//修改複製後的tmp->random的值

tmp = tmp-

>next;

//後移

}return new_head;}}

;

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