zoukankan      html  css  js  c++  java
  • 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);
    
  • 相关阅读:
    oracle锁分类
    oracle中decode函数
    oracle分区
    oracle处理字符串
    oracle索引分类
    oracle表连接
    oracle处理字符串
    oracle分区
    木马中如何编程实现远程关机
    木马中如何编程实现远程关机
  • 原文地址:https://www.cnblogs.com/samwu/p/9130653.html
Copyright © 2011-2022 走看看