劍指offer 面試題35 複雜鍊錶的複製

2021-10-08 04:48:28 字數 847 閱讀 1769

給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。

要求返回這個鍊錶的 深拷貝。

我們用乙個由 n 個節點組成的鍊錶來表示輸入/輸出中的鍊錶。每個節點用乙個 [val, random_index] 表示:

val:乙個表示 node.val 的整數。

random_index:隨機指標指向的節點索引(範圍從 0 到 n-1);如果不指向任何節點,則為 null 。

輸入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]

輸出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

輸入:head = [[1,1],[2,1]]

輸出:[[1,1],[2,1]]

輸入:head = [[3,null],[3,0],[3,null]]

輸出:[[3,null],[3,0],[3,null]]

就地複製

複製節點,同時將複製節點鏈結到原節點後面,如a->b->c 變為 a->a』->b->b』->c->c』。

設定節點random值。

將複製鍊錶從原鍊錶分離。

class solution 

cur = head;

while

(cur)

cur = head;

p1 = head->next;

node* res = p1;

while

(cur)

return res;}}

;

雜湊表

題解

複雜鍊錶的複製 劍指offer 面試題35

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 本題是對複雜鍊錶的複製,這裡實現的方法時間複雜度是o n 並且沒有開闢額外的空間 1 首先...

劍指offer 面試題35 複雜鍊錶的複製

複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個next指向下乙個節點外,還有乙個sbiling指向鍊錶中的任意節點或者null。class node 第一步 根據原始鍊錶的每個結點n建立對應的n 並把n 連在n的後面 第二步 b sbiling就記錄在了b.sbiling.next 第三部 奇偶...

劍指offer 面試題35 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 class solution private void copynode randomli...