请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
let randomMap = []
let nodeMap = new Map()
let current1 = head
let newHead = null
let current2 = newHead
let index = 0
while(current1){
let node = new Node(current1.val)
randomMap[index++] = current1.random == null?null:current1.random
if(newHead == null){
newHead = node
current2 = node
}else{
node.next = current2.next
current2.next = node
current2 = current2.next
}
nodeMap.set(current1,node)
current1 = current1.next
}
current2 = newHead
index = 0
while(current2){
current2.random = randomMap[index] == null?null:nodeMap.get(randomMap[index])
index++
current2 = current2.next
}
return newHead
};