一、題目
二、重點難點分析
1.怎麼確定random在新的節點的位置
2.為什麼要用map?答:map函式有鍵值關係,先確定好舊鍊錶的鍵值關係,在從新的煉表裡利用舊煉表裡的鍵key配對random(就是值)
3.new 乙個map出來,按著(node,node.val)傳入進到map裡(node是head,node.val是random)
4.要注意一點:假如random 和 next都為空,如果map裡面沒有,就會報錯
5.第二個while 是配對,從map裡找到舊鍊錶的key,然後尋找到random(值),配對完後會更新map,所以最後只要return乙個head即可。
三、**
1/**2* // definition for a node.
3* function node(val, next, random) ;8*/
910/**
11* @param head
12* @return
13*/
14var copyrandomlist = function
(head)
23 map.set(null,null
);24 node =head;
2526
while
( node )
2732
return
map.get(head);
33 };
刷題 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 第一反應 分兩步。第一步考慮next,第二步考慮random。利用雜湊表建立對映關係。co...
刷題之路 複雜鍊錶的複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head 三步走 第一步,複製鍊錶節點a b c 變為 a a b b c c 目的為了第二步 第二步,重建random指標位置,此時,複製後的指標指向的位置應該就是原節...
刷題筆記(十二) 複雜鍊錶複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 思路 開始沒大看懂題啥意思,看了給定的結構體才明白。首先將各個節點進行複製a a 並將複製...