首页 > 其他 > 详细

剑指 Offer 35. 复杂链表的复制

时间:2021-05-14 15:52:13      阅读:20      评论:0      收藏:0      [点我收藏+]

https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/

/*
struct RandomListNode {
    int label;
    struct RandomListNode *next, *random;
    RandomListNode(int x) :
            label(x), next(NULL), random(NULL) {
    }
};
*/
class Solution {
public:
    RandomListNode* Clone(RandomListNode* pHead) {
        if(pHead == NULL)
            return NULL;
        //建立map,存储旧节点到新节点的映射
        map<RandomListNode*,RandomListNode*> mymap;
        RandomListNode* cur = pHead;
        while(cur){
            RandomListNode* node = new RandomListNode(cur->label);
            mymap[cur] = node;
            cur = cur->next;
        }
        //考虑next,random指针为NULL的情况
        mymap[NULL] = NULL;
        cur = pHead;
        //在遍历一次,存储next,random指针
        while(cur){
            mymap[cur]->next = mymap[cur->next];
            mymap[cur]->random = mymap[cur->random];
            cur = cur->next;
        }
        return mymap[pHead];
    }
};

 

剑指 Offer 35. 复杂链表的复制

原文:https://www.cnblogs.com/boluo007/p/14767795.html

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