题目描述

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

思路

 用js刷剑指offer(复杂链表的复制) 算法

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

牛客网链接

js代码

/*function RandomListNode(x){
    this.label = x;
    this.next = null;
    this.random = null;
}*/
function Clone(pHead)
{
    // write code here
    if (!pHead) return null
    let p = pHead
    while (p) {
        let node = new RandomListNode(p.label)
        node.next = p.next
        p.next = node
        p = p.next.next
    }
    p = pHead
    while (p) {
        if (p.random) p.next.random = p.random
        else p.next.random = null
        p = p.next.next
    }
    
    p = pHead.next
    let root = new RandomListNode(0)
    let q = root
    while (p) {
        q.next = p
        q = q.next
        if (p.next) p = p.next.next
        else break
    }
    q.next = null
    return root.next
}```
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄