• Lintcode105 Copy List with Random Pointer solution 题解


    【题目描述】

    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.

    给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。

    返回一个深拷贝的链表。

    【题目链接】

    www.lintcode.com/en/problem/copy-list-with-random-pointer/

    var data = {
        val:1,
        next:{
           val:2,
           next:{
              val:3,
              next:{
                  val:4,
                  next:null
              } 
           }
        }
    };
    
    data.rand = data.next.next;
    data.next.rand = null;
    data.next.next.rand = null;
    data.next.next.next.rand = data;
    
    const copyRandomList = function(head){
        if(head === null){
            return null;
        }
        let cur = head;
        let next = null;
    
        while(cur !== null){
            next = cur.next;
            cur.next = {};
            cur.next.next = next;
            cur = next;
        }
    
        cur = head;
        let curCopy = null;
    
        while(cur !== null){
            next = cur.next.next;
            curCopy = cur.next;
            curCopy.val = cur.val;
            curCopy.rand = (function(){
                if(cur.rand !== null){
                    // cur.rand是正本,cur.rand.next是副本,所以返回的是副本指向
                    return cur.rand.next;
                }
    
                return null;
            })();
            cur = next;
        }
    
        let res = head.next;
        cur = head;
    
        while(cur !== null){
            next = cur.next.next;
            curCopy = cur.next;
            cur.next = next;
            curCopy.next = (function(){
                if(next !== null){
                    return next.next;
                }
    
                return null;
            })();
            cur =next;
        }
    
        return res;
    };
    
    var result = copyRandomList(data);
    console.log(result);
    
  • 相关阅读:
    cookies
    php文件上传
    pho文件和目录操作
    php 日期和时间
    json解析网站
    only_full_group_by的注意事项
    $.extend()、$.fn和$.fn.extend()
    select样式美化(简单实用)
    toArray(),toJson(),hidden([ ]),visible([ ])
    tp5 model 中的查询范围(scope)
  • 原文地址:https://www.cnblogs.com/samwu/p/9130653.html
Copyright © 2020-2023  润新知