請實現 copyrandomlist 函式,複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個 next 指標指向下乙個節點,還有乙個 random 指標指向鍊錶中的任意節點或者 null。
示例 1:
輸入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
輸出:[[7,null],[13,0],[11,4],[10,2],[1,0]]
示例 2:
輸入:head = [[1,1],[2,1]]
輸出:[[1,1],[2,1]]
示例 3:
輸入:head = [[3,null],[3,0],[3,null]]
輸出:[[3,null],[3,0],[3,null]]
示例 4:
輸入:head =
輸出:解釋:給定的鍊錶為空(空指標),因此返回 null。
本題同【leetcode】138. 複製帶隨機指標的鍊錶
借助雜湊儲存節點資訊。
時間複雜度:o(n)
空間複雜度:o(n)
class solution
cur = head;
//2. 複製鍊錶next和random指標
while (cur)
return ump[head];}};
時間複雜度:o(n)
空間複雜度:o(n)
class solution
node* copy(node *head, unordered_map&ump)
};
複製節點,同時將複製節點鏈結到原節點後面,如a->b->c 變為 a->a'->b->b'->c->c'。
設定節點random值。
將複製鍊錶從原鍊錶分離。
時間複雜度:o(n)
空間複雜度:o(1)
class solution
//2. 複製random節點
cur = head;
while (cur)
cur = cur->next->next;
}//3. 分離鍊錶
cur = head;
node *newhead = head->next, *p = newhead;
while (cur)
cur = cur->next;
p = p->next;
}return newhead;}};
複雜鍊錶的複製 劍指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...