複製含有隨機節點的鍊錶

2021-08-02 20:05:05 字數 836 閱讀 9261

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
由於是深copy,隨機節點指向的物件也應該是新的節點。

給出兩種解法

第一種,採用hashmap記錄新舊節點

**如下:

public randomlistnode clone(randomlistnode phead)

p = phead;

while(p!=null)

return map.get(phead);

}

第二種方法,不需要額外的空間開銷,時間複雜度也為o(

n)具體

原來的鍊錶為1->2->3

構建新鍊錶的時候,將copy的節點放在原節點後面,即

1->1』->2->2』->3->3』

這樣一來,newnode.random = orgnode.random.next

**如下:

public randomlistnode clone(randomlistnode phead)

p = phead;

randomlistnode curcopy = null;

while(p!=null)

randomlistnode res = phead.next;

p = phead;

while(p!=null)

return res;

}

複製含有隨機指標節點的鍊錶

題目要求 請將乙個特殊鍊錶複製乙份,乙個特殊的鍊錶節點結構如下 node類中包含 value 表示節點的值 next 表示下乙個節點 rand 表示隨機指向的任意乙個節點 題目分析 相當於,就是在乙個普通單鏈表的基礎上,每個節點多了乙個可以任意指向的指標,比如 1 2 3,然後1的rand指向3,2...

演算法總結之 複製含有隨機指標節點的鍊錶

一種特殊的鍊錶節點類描述如下 public class node public node copylistwithrand1 node head cur head while cur null return map.get head 介紹高階做法 不適用雜湊表來儲存對應關係,只用有限的幾個變數完成所...

382 鍊錶隨機節點

382.鍊錶隨機節點 給定乙個單鏈表,隨機選擇鍊錶的乙個節點,並返回相應的節點值。保證每個節點被選的概率一樣。高階 如果鍊錶十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現?示例 初始化乙個單鏈表 1,2,3 listnode head new listnode 1 head.ne...