算法训练第六十一天

剑指 Offer 35. 复杂链表的复制 - 力扣(LeetCode)

总结:今日这道题自己使用暴力方法结果是超时了,看完题解后觉得实在是太妙了!!!利用哈希表与递归(答案中说是回溯,个人理解是递归),利用哈希表记录已经创建了的节点,如果没有找到就直接新创建节点,找到了就直接返回哈希表记录的值,而哈希表的键值就是原来链表中的节点,哈希表中的键值和值值非常对应,就是两个不同链表中的同一节点。

代码:

cpp 复制代码
class Solution {
public:
    unordered_map<Node*,Node*> cachedNode;
    Node* copyRandomList(Node* head) {
        if(head == nullptr)
        return head;
        if(!cachedNode.count(head))
        {
            Node* headNew = new Node(head->val);
            cachedNode[head] = headNew;
            headNew->next = copyRandomList(head->next);
            headNew->random = copyRandomList(head->random);
        }
        return cachedNode[head];
    }
};
//太妙了!!!
//记得反复观看
相关推荐
学涯乐码堂主9 分钟前
有趣的“打擂台算法”
c++·算法·青少年编程·gesp
Tutankaaa37 分钟前
知识竞赛题库设计全攻略
人工智能·算法
WolfGang0073211 小时前
代码随想录算法训练营 Day50 | 图论 part08
数据结构·算法·图论
aini_lovee3 小时前
多目标粒子群优化(MOPSO)双适应度函数MATLAB实现
人工智能·算法·matlab
yong99903 小时前
图像融合与拼接:完整MATLAB工具箱
算法·计算机视觉·matlab
春风不语5053 小时前
深入理解主成分分析(PCA)
算法
apollowing3 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶(二十二)
算法·启发式算法·web app
晚枫歌F3 小时前
最小堆定时器
数据结构·算法
Lumos_7774 小时前
Linux -- 线程
java·jvm·算法
七颗糖很甜4 小时前
“十五五”气象发展规划:聚焦五大核心任务
大数据·python·算法