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);
相关推荐
June`1 小时前
FloodFill算法:图像处理与游戏开发利器
算法·深度优先·floodfill
wWYy.2 小时前
算法:四数相加||
算法
難釋懷2 小时前
解决状态登录刷新问题
java·开发语言·javascript
新能源BMS佬大2 小时前
【仿真到实战】STM32落地EKF算法实现锂电池SOC高精度估算(含硬件驱动与源码)
stm32·嵌入式硬件·算法·电池soc估计·bms电池管理系统·扩展卡尔曼滤波估计soc·野火开发板
wen__xvn2 小时前
模拟题刷题2
算法
AI 菌2 小时前
DeepSeek-OCR 解读
人工智能·算法·计算机视觉·大模型·ocr
一起养小猫2 小时前
Flutter实战:从零实现俄罗斯方块(三)交互控制与事件处理
javascript·flutter·交互
lethelyh2 小时前
Vue day1
前端·javascript·vue.js
历程里程碑2 小时前
Linux 5 目录权限与粘滞位详解
linux·运维·服务器·数据结构·python·算法·tornado