題目描述
給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。 要求返回這個鍊錶的 深拷貝。考點我們用乙個由 n 個節點組成的鍊錶來表示輸入/輸出中的鍊錶。每個節點用乙個 [val, random_index] 表示:
val:乙個表示 node.val 的整數。
random_index:隨機指標指向的節點索引(範圍從 0 到 n-1);如果不指向任何節點,則為 null 。
1.淺拷貝: 將原物件或原陣列的引用直接賦給新物件,新陣列,新物件/陣列只是原物件的乙個引用
2.深拷貝: 建立乙個新的物件和陣列,將原物件的各項屬性的「值」(陣列的所有元素)拷貝過來,是「值」而不是「引用」
題解步驟:
1.在原鍊錶每個節點後面插入乙個值相等的新節點
2.給新節點的隨即指標域賦值
3.將新節點從原煉表中拆下來
**public class random_list
mapmap = new hashmap<>();
node node = head;
while (node != null)
node = head;
//給新節點的next和隨即指標域賦值
while (node!= null)
return map.get(head);
/*return headnew;*/
}public static void main(string args)
}class node
}
複雜鍊錶的深拷貝
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點 請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 看完題目應該很混亂,甚至還有點看不懂。題目解析 看上面的,題...
鍊錶 深度拷貝乙個帶有隨機指標的鍊錶
本文介紹兩種解法。解法1 利用乙個map listnode copyrandomlist listnode head 第二次迴圈把新節點的random指標賦值 tmpnode head while tmpnode null else tmpnode tmpnode next return newhe...
複雜鍊錶的複製(深拷貝)
給定乙個鍊錶,每個結點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中任何結點或者空結點,要求返回這個鍊錶的深拷貝。思路分析 1.破壞需要複製的複雜鍊錶,將新老節點串成乙個單鏈表的形式 2.解決random的指向問題 重要 cur.next.random cur.random.next 3.完成上述...