"""
# Definition for a Node.
class Node:
def __init__(self, val, next, random):
self.val = val
self.next = next
self.random = random
"""
class Solution:
def copyRandomList(self, head: 'Node') -> 'Node':
if head==None:
return None
p=head
"""
step1
copy the list without random
"""
while p:
tem=Node(p.val,None,None)
tem.next=p.next
p.next=tem
p=p.next.next
"""
step2
copy the random
"""
p=head
while p:
tem=p.next
if p.random:
tem.random=p.random.next
else:
tem.random=None
p=p.next.next
"""
step3
split the list
"""
p=head
res=p.next
result=res
while p:
p.next=res.next
p=res.next
if p==None:
res.next=None
break
else:
res.next=p.next
res=p.next
return result
Leetcode_138带有随机指针链表的复制(Copy List with Random Pointer)
最新推荐文章于 2022-03-29 20:49:35 发布