python解決復雜鏈表的復制
阿新 • • 發佈:2018-04-07
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解決復雜鏈表的復制