zoukankan      html  css  js  c++  java
  • 138. Copy List with Random Pointer(js)

    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
    };
  • 相关阅读:
    字符串拼接练习
    java数字字符的全半角转化
    mysql 的group by 满足的规则要求:
    从指定字符串获取n个随机数
    jQuery去除空格的$.trim()
    mysql里的位运算小结
    sql的case 用法
    泛型之元组示例
    jQuery里的replaceAll和replaceWith
    根据索引条件查询结果与原表关联的查询
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/10970758.html
Copyright © 2011-2022 走看看