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

复杂链表的复制

http://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba

或许你和我一样,题目拿到手先想到的是用map来映射每一个值对应的节点,劈里啪啦代码敲了半天,段错误QAQ
对着题解比较了半天发现大家思路都一样啊,仔细看了好久才看出来坑在哪:
1、点此查看相关讯息 里有写了,lable是不会重复的
2、不是每一个节点都存在random指针的,要做一个是否存在的判断
兄弟们,要认真读题啊

class Solution {
public:
    RandomListNode* Clone(RandomListNode* pHead) {
        if(pHead == NULL) return NULL;
        map<int,RandomListNode*> cache; 
        RandomListNode *root = pHead,*ansroot = new RandomListNode(pHead->label),*ans=ansroot;
        cache[pHead->label] = ansroot;
        while(pHead->next!=nullptr)//复制链表到ansroot
        {
            pHead = pHead->next;
            RandomListNode* temp = new RandomListNode(pHead->label);
            temp->next = pHead->next;
            ans->next = temp;
            cache[pHead->label] = temp;
            ans = ans->next;
        }
        //处理随机节点指针
        pHead = root;
        RandomListNode *r = ansroot;
        while(pHead != nullptr)
        {
            if(pHead->random!=nullptr)//不是所有节点都有random指针
            {
                r->random = cache[pHead->random->label];
            }
                r = r->next;
                pHead = pHead->next;
        }
        return ansroot;
    }
};
全部评论

相关推荐

||&nbsp;先说下主播个人情况:211本,暑期实习之前有过一段中大厂的后端实习,暑期拿过腾讯的实习offer,综合考虑业务和语言最终去了美团。实习期间体感还是不错的,5月初去的,去了就一直急着要需求做,担心因为没有产出导致转正失败,在第二个星期就和mt透露我希望能够留用。虽然第一个由于美团新人landing的友好性基本没做什么需求,但是后面也写出了小2w行的代码量(不包含单测)。中期经常主动加班赶需求,经常持续一两个星期加班到10点甚至更后面。mt对我确实不错,也是言传身教,实习期间给我讲了很多关于单测,ddd,set化等的理解,也是受益匪浅,此外在做需求的时候,也能看出把比较有含金量的部分交给我做...
菜菜菜小白菜菜菜:我在字节实习了四个月,有转正的压力所以周末大部分也在公司自学,也是因为一些原因转正拖的很久,这个点还没答辩,过段时间才回去答辩。整个不确定性的焦虑贯穿了我的秋招三个月,我也曾经犹豫过是不是应该放弃转正走秋招更快,最后因为沉没成本一直舍不得放弃,前前后后七个月真的挺累的,尤其是没有来字节实习的同学已经校招拿到意向时更加焦虑。这段时间也跟mentor聊了很多次,他告诉我未来工作上或者生活上,比这些更头疼的事情会更多,关键还是要调整好自己的心态。转正没有通过从过程上来看其实跟你自身没太大的关系,拖了三个月不出结果显然是ld的问题,并且今年美团最近的开奖大家似乎都不是很乐观,所以不去也罢。我在字节实习的时候,6月份有一个赶上春招末期的25届同事刚面进来,也拿到了小sp的薪水。不要对这件事有太大的压力,时代的问题罢了
点赞 评论 收藏
分享
迷茫的大四🐶:你这个拿去投央国企吧,投私企包过不了的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务