首页 > 其他 > 详细

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

时间:2020-11-04 10:01:36      阅读:38      评论:0      收藏:0      [点我收藏+]

技术分享图片

题目描述如上,先是没看懂题,看了样例,就是将输入的链表再输出,但是每个节点有random指针,由于不能确定节点的random所指的节点是否已知;

1.遍历链表里的节点,并存在hashmap中
2.再遍历一遍,调整map中节点的next、random指针
3.返回map
/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* next;
    Node* random;
    
    Node(int _val) {
        val = _val;
        next = NULL;
        random = NULL;
    }
};
*/

class Solution {
public:
    Node* copyRandomList(Node* head) {
        if(head == NULL) return NULL;
        Node *tmp = head;
        unordered_map<Node*, Node*>mp;
        while(tmp!=NULL){
            mp[tmp] = new Node(tmp->val);
            tmp = tmp->next;
        }
        tmp = head;
        while(tmp!=NULL){
            mp[tmp]->next = mp[tmp->next];
            mp[tmp]->random = mp[tmp->random];
            tmp = tmp->next;
        }
        return mp[head];
    }
};

 

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

原文:https://www.cnblogs.com/chenyang920/p/13923993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!