Leetcode 437. 路径总和 III (Day 16)JavaScript

javascript 复制代码
var pathSum = function(root, targetSum) {
    let count=0,sum=0;
    const idx=new Map();
    function dfs(root){
        if(!root) return;
        idx.set(sum,(idx.get(sum)??0)+1);
        sum+=root.val;
        const j=sum-targetSum;
        count+=idx.get(j)??0;
        dfs(root.left);
        dfs(root.right);
        sum -= root.val;
        idx.set(sum, idx.get(sum) - 1);
        
    }
    dfs(root);
    return count;
};

算法核心同题560 前缀和+哈希表
注意:要回溯! 如果不回溯左子树会污染右子树,同时回溯时要与添加时对称

javascript 复制代码
idx.set(sum,(idx.get(sum)??0)+1);
sum+=root.val;
//对称
sum -= root.val;
idx.set(sum, idx.get(sum) - 1);
相关推荐
To_OC6 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎7 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC8 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
小林ixn8 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
delishcomcn9 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
এ慕ོ冬℘゜9 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
触底反弹9 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术9 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划
随心点儿9 小时前
js postMessage 实现跨域发送消息-应用示例
javascript·ecmascript·postmessage