劍指offer 複雜鍊錶的複製

2021-09-26 21:13:06 字數 1088 閱讀 1576

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

解題思路:首先進行單鏈表的複製,在這個過程中,使用字典記錄兩個單鏈表對應的結點。然後進行隨機指標的複製,遍歷源複雜鍊錶,若某節點存在隨機指標,那麼將該節點對應的複製結點的隨機指標賦值為該結點隨機指標指向的結點對應的複製結點。即

d[pointer].random = d[pointer.random]

python**如下:

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

# class randomlistnode:

# def __init__(self, x):

# self.label = x

# self.next = none

# self.random = none

class solution:

# 返回 randomlistnode

def clone(self, phead):

# write code here

d = {}

dummy = randomlistnode(0)

newhead = dummy

pointer = phead

while pointer:

newpointer = randomlistnode(pointer.label)

d[pointer] = newpointer

newhead.next = newpointer

newhead = newhead.next

pointer = pointer.next

pointer = phead

while pointer:

if pointer.random:

d[pointer].random = d[pointer.random]

pointer = pointer.next

return dummy.next

劍指offer複雜鍊錶複製

題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 我的 思路比較笨,就是首先構造乙個正常的不大random指標的鍊錶,然後再去遍歷...

劍指offer 複雜鍊錶複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 1 複製每個節點,如 複製節點a得到a1,將a1插入節點a後面 2 遍歷鍊錶,a...

劍指offer 複雜鍊錶複製

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