題目要求:
給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。
要求返回這個鍊錶的深拷貝。
這道題我知道的有兩種解法:一種是遍歷鍊錶,找到每乙個節點的隨機指標,但是這樣做時間複雜度是o(n^2),另外一種是拷貝節點的方法,下面我用一幅圖具體講一下節點的拷貝思路。
下面配以**具體說明:
class solution
//2、在複製完的新鍊錶中確定random指標
cur=head;
while(cur)
else
copy->random=null;
cur=copy->next;
}//3、把copy的節點從原煉表中拆解下來
node* copyhead,*tail;
copyhead=tail=new node;
cur=head;
while(cur)
node* newhead=copyhead->next;
delete copyhead;
return newhead;}};
這道題需要注意的是返回的是新開闢的頭節點copyhead的下乙個位置,最後再釋放開闢的頭節點copyhead。 複製帶隨機指標的鍊錶
給出乙個鍊錶,每個節點包含乙個額外增加的隨機指標可以指向鍊錶中的任何節點或空的節點。返回乙個深拷貝的鍊錶。public randomlistnode copyrandomlist randomlistnode head hashmapmap new hashmap randomlistnode du...
複製帶隨機指標的鍊錶
解題思路是先建立一條複製鍊錶,複製鍊錶的val和原始鍊錶的val相對應,建立過程中,使用雜湊表建立原始結點和複製結點的對映。原始結點為key,複製結點為value。那麼,在複製鍊錶中查詢當前結點的隨機指標時,當前對應原始結點的隨機指標所對映的值value就是這個複製結點的隨機指標。這個解題思路關鍵在...
複製帶隨機指標的鍊錶
給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。要求返回這個鍊錶的深拷貝。示例 輸入 val 2 random val 1 解法1 建立乙個存放節點的複製節點的map static mapvisitedmap new hashmap 8 public sta...