題目:給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。
要求返回這個鍊錶的 深拷貝。
我們用乙個由 n 個節點組成的鍊錶來表示輸入/輸出中的鍊錶。每個節點用乙個 [val, random_index] 表示:
val:乙個表示 node.val 的整數。
random_index:隨機指標指向的節點索引(範圍從 0 到 n-1);如果不指向任何節點,則為 null 。
示例1:
輸入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
輸出:[[7,null],[13,0],[11,4],[10,2],[1,0]]
思路:雜湊表。key是舊的節點,value是新的節點,每次操作value都要靠舊節點
c++實現:
/*
// definition for a node.
class node
};*/
class solution
p=head;
while(p)
p=head;
while(p)
return mp[head];}};
138 複製帶隨機指標的鍊錶
給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。要求返回這個鍊錶的深度拷貝。definition for singly linked list with a random pointer.struct randomlistnode class solutio...
138 複製帶隨機指標的鍊錶
138.複製帶隨機指標的鍊錶 回溯演算法的第一想法是將鍊錶想象成一張圖。鍊錶中每個節點都有2個指標 圖中的邊 因為隨機指標給圖結構新增了隨機性,所以我們可能會訪問相同的節點多次,這樣就形成了環 上圖中,我們可以看到隨機指標指向了前乙個節點,因此形成了環。我們需要考慮這種環的實現。此方法中,我們只需要...
138 複製帶隨機指標的鍊錶
package leetcode public class demo 138 node otemp head 在每個節點之後複製乙個相同的節點 while otemp null 每個節點後插入乙個相同的節點 otemp.next t otemp otemp.next.next 複製隨機指標 otem...