138-copy-list-with-random-pointer

DevGod needs to write a blog entry for this problem!
/**
 * // Definition for a Node.
 * function Node(val, next, random) {
 *    this.val = val;
 *    this.next = next;
 *    this.random = random;
 * };
 */

/**
 * @param {Node} head
 * @return {Node}
 */
var copyRandomList = function(head) {
    if(!head){return null;}

    const myMap = new Map();
    let pointer = head;
    while(pointer){
        myMap.set(pointer, new Node(pointer.val));
        pointer = pointer.next;
    }

    pointer = head;
    while(pointer){
        myMap.get(pointer).next = myMap.get(pointer.next) || null;
        myMap.get(pointer).random = myMap.get(pointer.random) || null;
        pointer = pointer.next;
    }

    return myMap.get(head);
};