Leetcode437. 路径总和 III(HOT100)

链接

我的代码:

cpp 复制代码
class Solution {
public:
    int res = 0;
    int pathSum(TreeNode* root, int targetSum) {
        if(!root)return 0;
        dfs(root,targetSum);
        pathSum(root->left,targetSum);
        pathSum(root->right,targetSum);
        return res;
    }
    void dfs(TreeNode*root,long long targetSum){
        if(!root)return;
        targetSum-=root->val;
        if(targetSum==0){
            res++;
        }
        dfs(root->left,targetSum);
        dfs(root->right,targetSum);

    }
};

更好的代码:

cpp 复制代码
class Solution {
public:
    unordered_map<long long,int> cnt;
    int res = 0;
    int pathSum(TreeNode* root, int targetSum) {
        cnt[0] = 1;
        dfs(root,targetSum,0);
        return res;
    }
    void dfs(TreeNode*root,int targetSum,long long cur){
        if(!root)return;
        cur+=root->val;
        res+=cnt[cur-targetSum];
        cnt[cur]++;
        dfs(root->left,targetSum,cur),dfs(root->right,targetSum,cur);
        cnt[cur]--;
    }
};

第二次这个代码刚开始写的时候:没有把cnt中key的类型从int改为long long,然后一直疑惑:dfs形参cur的类型就是int啊...........

原来cnt的key的类型也要改,因为cnt存储的是某和出现了多少次,这个和可能会溢出。

相关推荐
啦啦啦啦啦zzzz8 分钟前
算法:回溯算法
c++·算法·leetcode
IT探索22 分钟前
Linux 查找文件指令总结
linux·算法
Lumos1861 小时前
51单片机从零到实战(完结)——后续学习路线建议
算法
稚南城才子,乌衣巷风流1 小时前
DFS序详解:原理、应用与实现
算法·深度优先·图论
稚南城才子,乌衣巷风流1 小时前
动态树(Dynamic Tree)数据结构详解
数据结构·算法
zander2582 小时前
114. 二叉树展开为链表
数据结构·链表·深度优先
变量未定义~2 小时前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗2 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
LONGZETECH2 小时前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
自学小白菜2 小时前
关于提升机器学习算法做预测回归任务精度的方法分享
算法·机器学习·回归·提升精度