面試題三十五 複雜鍊錶的複製

2022-06-10 03:30:11 字數 394 閱讀 3015

在複雜鍊錶中,每個節點不止有指向下乙個節點的指標,還有乙個指向表中任意節點的指標psibling。

方法:第一步在每個節點n後面建立節點'n,把n'連線到n的後面

void

f1(listnode phead)

}

第二步:設定複製出來節點的psibling

void

f2(listnode phead)

}

第三步:拆分鍊錶,奇數字連線起來就是原始鍊錶,偶數字則是複製的鍊錶結果

listnode f3(  listnode phead)             

while( pnode !=null

)

}

面試題 複雜鍊錶複製

lettcode面試題35.複雜鍊錶的複製 請實現 copyrandomlist 函式,複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個 next 指標指向下乙個節點,還有乙個 random 指標指向鍊錶中的任意節點或者 null。class node int val node next node...

面試題 複雜鍊錶的複製

對於這個題,基本會有三個思路 1.這裡鍊錶的複製和單鏈表最大的不同,就是多了乙個自由指標 psub 那麼最簡單的想法就是,遍歷單鏈表,找到psub指向的節點,然後複製,這樣做最簡單,事件複雜度為o n的平方 2.基於第一種方法的優化,第一種方法把事件浪費在了查詢節點上,那麼我們可以建立乙個雜湊函式,...

面試題26 複雜鍊錶的複製

以下圖為5個結點的複雜鍊錶,實線表示m pnext指標的指向,虛線表示m psibling指標的指向 方法一 分兩步 1 遍歷一遍鍊錶,用m pnext指標將鍊錶連起來,o n 2 確定每個m psibling指標的指向,需重新遍歷新鍊錶確定其m psibling的指向,o n 時間代價為o n 2...