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

复杂链表的复制

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

function RandomListNode(x){
    this.label = x;
    this.next = null;
    this.random = null;
}
function Clone(pHead)
{
    // write code here
    if (pHead === null) return null
    const targetCache = []
    const copiedCache = []
    let currentNode = pHead
    const copiedHead = new RandomListNode(pHead.label)
    let currentCopiedNode = copiedHead
    targetCache.push(currentNode)
    copiedCache.push(currentCopiedNode)
    while (currentNode.next) {
        const cachedNodeIndex = targetCache.indexOf(currentNode.next)
        if (cachedNodeIndex === -1) {
            currentCopiedNode.next = new RandomListNode(currentNode.next.label)
            copiedCache.push(currentCopiedNode.next)
        } else {
            currentCopiedNode.next = copiedCache[cachedNodeIndex]
        }

        if (currentNode.random !== null) {
            const cachedRandomNodeIndex = targetCache.indexOf(currentNode.random)
            if (cachedRandomNodeIndex === -1) {
                currentCopiedNode.random = new RandomListNode(currentNode.random.label)
                copiedCache.push(currentCopiedNode.random)
            } else {
                currentCopiedNode.random = copiedCache[cachedRandomNodeIndex]
            }
        }
        currentNode = currentNode.next
        currentCopiedNode = currentCopiedNode.next
        targetCache.push(currentNode)
    }
    return copiedHead
}
module.exports = {
    Clone : Clone
};

全部评论

相关推荐

研J小政:刚打了个电话给你😁😁😁
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务