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

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 138. 复制带随机指针的链表相关的知识,希望对你有一定的参考价值。

题目链接:138. 复制带随机指针的链表

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。

Ideas

算法:哈希表
数据结构:链表
思路:相当于手动写一个深拷贝算法,可以利用哈希表记录链表中每个节点的对应节点,遍历一遍即可创建新的链表节点,此时还没有创建链表之间的关联关系,所以还需要再遍历一遍,将关联关系也创建上即可。

Code

C++

class Solution 
public:
    Node* copyRandomList(Node* head) 
        unordered_map<Node*, Node*> map;
        Node *cur = head;
        while (cur != nullptr) 
            map[cur] = new Node(cur->val);
            cur = cur->next;
        
        cur = head;
        while (cur != nullptr) 
            map[cur]->next = map[cur->next];
            map[cur]->random = map[cur->random];
            cur = cur->next;
        
        return map[head];
    
;

以上是关于LeetCode Algorithm 138. 复制带随机指针的链表的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题Python138. 复制带随机指针的链表

leetcode138

LeetCode 138 Copy List with Random Pointer

LeetCode第138题—复制带随机指针的链表—Python实现

leetcode--138. Copy List with Random Pointer

leetcode-138-复制带随机指针的链表