Shu-How Zの小窝

Loading...

138. 随机链表的复制 138.复制带随机指针的链表

138. 随机链表的复制 138.复制带随机指针的链表

0:45:56

var copyRandomList = function(head) {
    if(!head) return null;
    //创建两个指针,一个指向头节点
    let p=head,q;
    //遍历整个链表,复制每个节点,并将值全部复制成一样的,然后拼接到原节点的后面;
    while(p){
      q=new ListNode(p.val);
      q.next=p.next;
      q.random=p.random;
      p.next=q;
      p=q.next;
    }
    //找到一个克隆节点,然后进行修正random.将克隆节点的random指向克隆节点
    p=head.next;
    while(p){
      p.random && (p.random=p.random.next);
      (p=p.next) && (p=p.next);
      // if(p.next) p=p.next.next;
    }
    //拆分链表,分成原节点链表和克隆节点链表:
    p=q=head.next;
    while(q.next){
      head.next=head.next.next;
      q.next=q.next.next;
      head=head.next;
      q=q.next;
    }
    head.next=null;
    //返回我们的克隆节点链表
    return p;
};
posted @ 2026-07-01 20:07  KooTeam  阅读(2)  评论(0)    收藏  举报