25.复杂链表的复制(python)

题目描述

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的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 

猜你喜欢

转载自www.cnblogs.com/NPC-assange/p/12042144.html