1. 程式人生 > >python解決復雜鏈表的復制

python解決復雜鏈表的復制

utf8 utf dom self. odi encoding return solution ==

題目如下:輸入一個復雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果為復制後復雜鏈表的head。(註意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空)

思路:第一步在原鏈表的基礎上復制節點,將節點復制在原節點的後面。第二步復制隨機節點。 第三步將新舊鏈表分離。 圖示如下

技術分享圖片

代碼如下:

#encoding:utf8
class  RandomListNode():
    def __init__(self,x):
        self.label = x
        self.next = None
        self.random 
= None class Solution: def clone(pHead): if pHead == None: return None #復制節點在原節點之後 pCur = pHead while(pCur != None): node = RandomListNode(pCur.label) node.next = pCur.next pCur.next = node pCur = node.next
#復制random節點 pCur = pHead while(pCur != None): if pCur.random != None: pCur.next.random = pCur.random.next pCur = pCur.next.next head = pHead.next cur = head #將新舊鏈表分離 pCur = pHead while(pCur != None): pCur.next
= pCur.next.next if cur.next != None: cur.next = cur.next.next cur = cur.next pCur = pCur.next return head

python解決復雜鏈表的復制