题解 | #JS_复杂链表的复制#

复杂链表的复制

http://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba

遍历两次+哈希表

function RandomListNode(x){
    this.label = x;
    this.next = null;
    this.random = null;
}
function Clone(pHead)
{  
   if(!pHead) return null;
   //构建哈希表,建立原节点到新节点的映射
   let hashMap = new Map();
   let head = new RandomListNode(pHead.label);
   hashMap.set(pHead,head);
   //遍历指针
   let cur = head;
   let pCur = pHead;
   while(pCur.next){
       cur.next = new RandomListNode(pCur.next.label);
       hashMap.set(pCur.next,cur.next);
       cur = cur.next;
       pCur = pCur.next;
   }
   //重新遍历
    cur = head;
    pCur = pHead;
    while(cur){
        cur.random = hashMap.get(pCur.random);
        cur = cur.next;
        pCur = pCur.next;
    }
    return head;    
}
module.exports = {
    Clone : Clone
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 14:45
bg是二本双一流硕,目标是Java后端开发岗,投暑期实习0大厂面试,只有极少的大厂测开,可能投的晚加上简历太烂加上0实习?求大佬们给个建议
程序员小白条:别去小厂,初创或者外包,尽量去中小,100-499和500-999,专门做互联网产品的,有公司自研的平台和封装的工具等等,去学习一些业务相关的,比如抽奖,积分兑换,SSO认证,风控,零售等等,目标 Java 后端开发吗?你要不考虑直接走大厂测开?如果技术不行的话,有面试你也很难过的
实习,不懂就问
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务