description
solution
存在兩種拷貝:深拷貝和淺拷貝
深拷貝主要是將另乙個物件的屬性值拷貝過來之後,另乙個物件的屬性值並不受到影響,因為此時它自己在堆中開闢了自己的記憶體區域,不受外界干擾。
淺拷貝主要拷貝的是物件的引用值,當改變物件的值,另乙個物件的值也會發生變化。而本題需要我們用深拷貝來複製該複雜鍊錶,若每個節點只有乙個next指標指向下乙個節點,則只需要順序遍歷一遍待拷貝鍊錶,同時複製乙份即可;但這裡還有乙個random指標,所有我們需要同時建立原煉表和新鍊錶記憶體位址的對應關係,再遍歷一遍時進行random指標的賦值。
時間複雜度 o(n
logn)
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。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 剛開始看題時還有點摸不著頭腦,感覺這道題沒有任何存在的意義。後來看了大家的討論才明白。思想...