leetcode演算法題 複雜鍊錶的複製

2021-10-14 15:10:19 字數 1062 閱讀 4727

題目:

請實現 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...