題目:
請實現 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]]
題解:假設原結點為a-b-c-d-e
複製後的結點為a』-b』-c』-d』-e』
一共分為三個步驟
1、複製每個結點,而且讓每個複製後的結點接在被複製的節點後面:
a-a』-b-b』-c-c』-d-d』-e-e』
2、複製每個a』的random結點資訊,讓它通向相應的d』
3、將複製的鍊錶從長鍊錶中剝離出來
/*
// definition for a node.
class node
};*/
class solution
現在得到乙個拷貝後的鍊錶,下面就是將這個鍊錶的random同樣複製一次
cur = head;//找到頭部
while(cur != null)
更新cur(a)的資料,也就是把它更新成b,也就是後兩位的next
cur = cur->next->next;
}現在得到乙個鍊錶,包含兩份完全相同的資料元素,a-a'-b-b'-c-c'-d-d'-e-e'
//現在把他們拆開,只留下複製後的那個鍊錶 a-b-c-d-e和a'-b'-c'-d'-e'
cur = head;先找到頭結點
node* copyhead = head->next;
node* copycur = head->next;
while (cur != null)
}return copyhead;}};
演算法題 複雜鍊錶的複製
複雜鍊錶的複製 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個節點除了有乙個m pnext指標指向下乙個節點,還有乙個m psibling指標指向鍊錶中的任意節點或者nullptr。節點的c 定義如下 後面 均為...
演算法題 複雜鍊錶的複製
請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶,在複雜鍊錶中,每個結點除了有乙個m ppext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中的任意結點或者 null。結點的 c 定義如下 struct complexl...
Leet Code演算法題(反轉鍊錶)
c 解題思路,如何反轉乙個鍊錶 將head放到最後一位 head next作為head 重複操作 看 首先這是乙個鍊錶 定義幾個指標 listnode prep null,curp head,nextp head next 然後執行 curp next prep 將head放到最後 prep cur...