劍指offer 26 複雜鍊錶的複製

2021-08-08 11:30:56 字數 1169 閱讀 4683

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)

用乙個輔助字典,儲存原鍊錶和複製鍊錶的對應關係。第二次遍歷的時候,生成random節點。

# -*- coding:utf-8 -*-

# class randomlistnode:

# def __init__(self, x):

# self.label = x

# self.next = none

# self.random = none

class

solution:

# 返回 randomlistnode

defclone

(self, phead):

# write code here

if phead == none:

return

none

random_dict = {}

chead = randomlistnode(0)

cnode = chead

pnode = phead

while pnode != none:

cnode.label = pnode.label

cnode.next = randomlistnode(0)

random_dict[pnode] = cnode

pnode = pnode.next

if pnode == none:

cnode.next = none

else:

cnode = cnode.next

pnode = phead

cnode = chead

while pnode != none:

if pnode.random == none:

random_dict[pnode].random = none

else:

random_dict[pnode].random = random_dict[pnode.random]

pnode = pnode.next

return chead

劍指Offer26複雜鍊錶的複製

題目 請實現函式複製乙個複雜鍊錶,在複雜鍊錶中,每個結點除了有乙個m pnext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中的任意結點或者null。分析 這個題還是挺有難度的,我剛拿到題的時候想的是我可以先把簡單鍊錶複製一遍,然後再從頭挨著找m psibling指標指向的結點,這樣一...

劍指Offer 26 複雜鍊錶的複製

題目 有乙個複雜鍊錶,其結點除了有乙個m pnext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中的任一結點或者null。其結點的c 定義如下 請完成函式complexnode clone complexnode phead 以複製乙個複雜鍊錶。第一種方法 分成兩步 第一步是複製原始鍊...

劍指Offer程式設計練習025 複雜鍊錶的複製

題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 struct randomlistnode 思路一 遞迴,但是不通過 class...