算法训练第六十一天

剑指 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];
    }
};
//太妙了!!!
//记得反复观看
相关推荐
黑屋里的马2 小时前
java的设计模式之桥接模式(Bridge)
java·算法·桥接模式
sin_hielo2 小时前
leetcode 1611
算法·leetcode
李小白杂货铺2 小时前
识别和破除信息茧房
算法·信息茧房·识别信息茧房·破除信息茧房·算法推荐型茧房·观点过滤型茧房·茧房
来荔枝一大筐3 小时前
C++ LeetCode 力扣刷题 541. 反转字符串 II
c++·算法·leetcode
暴风鱼划水3 小时前
算法题(Python)数组篇 | 6.区间和
python·算法·数组·区间和
zl_vslam4 小时前
SLAM中的非线性优-3D图优化之轴角在Opencv-PNP中的应用(一)
前端·人工智能·算法·计算机视觉·slam se2 非线性优化
是苏浙4 小时前
零基础入门C语言之C语言实现数据结构之顺序表应用
c语言·数据结构·算法
lkbhua莱克瓦244 小时前
Java基础——常用算法3
java·数据结构·笔记·算法·github·排序算法·学习方法
小白程序员成长日记4 小时前
2025.11.07 力扣每日一题
数据结构·算法·leetcode
·白小白4 小时前
力扣(LeetCode) ——209. 长度最小的子数组(C++)
c++·算法·leetcode