C++,哈希表,易懂,代码短

复杂链表的复制

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

    RandomListNode* Clone(RandomListNode* pHead) {
        if(!pHead) return nullptr;
        RandomListNode* cur = pHead;
        unordered_map<RandomListNode*, RandomListNode*> map;
        //复制各节点,并建立 “原节点 -> 新节点” 的 Map 映射
        while(cur != nullptr) {
            map[cur] = new RandomListNode(cur->label);
            cur = cur->next;
        }
        cur = pHead;
        //构建新链表的 next 和 random 指向
        while(cur != nullptr) {
            map[cur]->next = map[cur->next];
            map[cur]->random = map[cur->random];
            cur = cur->next;
        }
        //返回新链表的头节点
        return map[pHead];
    }
全部评论
太强了
点赞 回复 分享
发布于 2021-09-21 21:38
点赞 回复 分享
发布于 2022-02-25 10:10
太强了
点赞 回复 分享
发布于 2022-03-03 21:32
好厉害,不过还有个小小的疑问,这个不是使用的map映射么,和标题中的哈希表有什么联系么,没太明白
点赞 回复 分享
发布于 2024-02-13 10:47 广东

相关推荐

评论
25
3
分享

创作者周榜

更多
牛客网
牛客企业服务