码迷,mamicode.com
首页 > Web开发 > 详细

138. Copy List with Random Pointer(js)

时间:2019-06-03 23:37:49      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:hat   def   nod   http   div   col   ati   指针   rand   

138. Copy List with Random Pointer

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.

Return a deep copy of the list.

 

Example 1:

技术图片

Input:
{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}

Explanation:
Node 1‘s value is 1, both of its next and random pointer points to Node 2.
Node 2‘s value is 2, its next pointer points to null and its random pointer points to itself.
题意:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点
代码如下:
/**
 * // 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) {
   const dummy = new Node(NaN, null, null); 
    let original = head; 
    let copier = dummy; 

    const map = new Map();
    while(original) {
        let newNode = new Node(original.val, null, null);
        copier.next = newNode;
        map.set(original, newNode);
        
        copier = copier.next;
        original = original.next;
    }
    copier = dummy.next;
    original = head;
    while(original) {
        if (original.random) {
            copier.random = map.get(original.random)
        }
        copier = copier.next
        original = original.next
    }
    
    return dummy.next
};

 

138. Copy List with Random Pointer(js)

标签:hat   def   nod   http   div   col   ati   指针   rand   

原文地址:https://www.cnblogs.com/xingguozhiming/p/10970758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!