图片转自力扣
该题在复制时的难点是新链表创建之后,random指针是无法指向未进行创建的节点的
在想到新链表可以进行哈希映射关系后,先循环生成旧链表与新链表的映射关系,再循环对next和random进行赋值即可
要注意在对next和random进行赋值时不能使用直接dict[].random的方式获得 ,因为题目说过可能指向null值
class Solution:
def copyRandomList(self, head: 'Node') -> 'Node':
if not head:return None
hashmap = {}
cur = head
while cur:
hashmap[cur] = Node(cur.val)
cur = cur.next
cur = head
while cur:
hashmap[cur].next = hashmap.get(cur.next)
hashmap[cur].random = hashmap.get(cur.random)
cur = cur.next
return hashmap[head]