两次遍历,哈希映射
- """
- # Definition for a Node.
- class Node:
- def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None):
- self.val = int(x)
- self.next = next
- self.random = random
- """
- class Solution:
- def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]':
- cur=head
- dic={}
- while cur:
- dic[cur]=Node(cur.val)
- cur=cur.next
- cur=head
- while cur:
- dic[cur].next=dic.get(cur.next)
- dic[cur].random=dic.get(cur.random)
- cur=cur.next
- return dic[head]