劍指 Offer 35 複雜鍊錶的複製 Map

2021-10-19 08:56:29 字數 845 閱讀 9595

description

solution

存在兩種拷貝:深拷貝和淺拷貝

深拷貝主要是將另乙個物件的屬性值拷貝過來之後,另乙個物件的屬性值並不受到影響,

因為此時它自己在堆中開闢了自己的記憶體區域,不受外界干擾。

淺拷貝主要拷貝的是物件的引用值,當改變物件的值,另乙個物件的值也會發生變化。

而本題需要我們用深拷貝來複製該複雜鍊錶,若每個節點只有乙個next指標指向下乙個節點,則只需要順序遍歷一遍待拷貝鍊錶,同時複製乙份即可;但這裡還有乙個random指標,所有我們需要同時建立原煉表和新鍊錶記憶體位址的對應關係,再遍歷一遍時進行random指標的賦值。

時間複雜度 o(n

log⁡n)

o(n\log n)

o(nlogn)

code

/*

// definition for a node.

class node

};*/

class

solution

dfs1

(nx, now-

>next);}

void

dfs2

(pnode nnow, pnode now)

node*

copyrandomlist

(node* head)

};

劍指Offer 35 複雜鍊錶的複製

請實現啊函式complexlistnode clone complexlistnode phead 複製乙個 複雜鍊錶。在複雜鍊錶中除了有乙個m pnext指標指向下乙個節點,還有乙個m psaibling 指標指向鍊錶中的任意節點或者nullptr。節點定義如下 class complexlist...

(劍指offer)35 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 思路 1.先複製鍊錶節點的值放在原來的節點後面,組成乙個新的鍊錶 2.處理複雜指標 安排複...

劍指offer35 複雜鍊錶的複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 剛開始看題時還有點摸不著頭腦,感覺這道題沒有任何存在的意義。後來看了大家的討論才明白。思想...