题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
思路就是三步走
1.在原来的每一个node后面追加一个一模一样的node
2.把node.random.next 赋值给node.next.random
3断开形成新链
1 import copy 2 class Solution: 3 # 返回 RandomListNode 4 def Clone(self, pHead): 5 # write code here 6 if pHead == None: 7 return None 8 ptmp = pHead 9 while ptmp : 10 newtmp = RandomListNode(ptmp.label) 11 newtmp.next = ptmp.next 12 ptmp.next=newtmp 13 ptmp=newtmp.next 14 if newtmp.next: 15 newtmp = newtmp.next.next 16 ptmp = pHead 17 while ptmp: 18 if ptmp.random: 19 ptmp.next.random = ptmp.random.next 20 ptmp=ptmp.next.next 21 22 newHead = pHead.next 23 ptmp=pHead 24 newtmp=pHead.next 25 while ptmp: 26 ptmp.next=ptmp.next.next 27 if newtmp.next: 28 newtmp.next=newtmp.next.next 29 newtmp=newtmp.next 30 ptmp = ptmp.next 31 return newHead
2019-12-15 10:36:22