【LeetCode热题100(47/100)】路径总和 III

题目地址: 链接

思路: 通过前缀和 + 回溯,每次记录当前前缀和,每次记录当前离 targetSum 的偏移量, 统计当前满足条件的路径数量。

js 复制代码
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} targetSum
 * @return {number}
 */
var pathSum = function(root, targetSum) {
    let map = new Map();
    let ans = 0;
    function dfs(root, pre) {
        if(!root) return null;
        
        let ppre = pre + root.val;
        let check_num = ppre - targetSum; // 偏移量

        ans += map.get(check_num) || 0;
        map.set(ppre, map.get(ppre) + 1 || 1);

        dfs(root.left, ppre);
        dfs(root.right,ppre);
        map.set(ppre, map.get(ppre) - 1);
    }
    map.set(0, 1);
    dfs(root, 0);
    return ans;
};
相关推荐
不当菜鸡的程序媛1 天前
Flow Matching|什么是“预测速度场 vt=ε−x”?
人工智能·算法·机器学习
sali-tec1 天前
C# 基于halcon的视觉工作流-章58-输出点云图
开发语言·人工智能·算法·计算机视觉·c#
_OP_CHEN1 天前
算法基础篇:(四)基础算法之前缀和
c++·算法·前缀和·蓝桥杯·acm·icpc·算法竞赛
_OP_CHEN1 天前
算法基础篇:(五)基础算法之差分——以“空间”换“时间”
c++·算法·acm·icpc·算法竞赛·差分算法·差分与前缀和
DuHz1 天前
霍夫变换和基于时频脊线的汽车FMCW雷达干扰抑制——论文阅读
论文阅读·物联网·算法·汽车·信息与通信·毫米波雷达
秋风&萧瑟1 天前
【C++】智能指针介绍
java·c++·算法
QiZhang | UESTC1 天前
JAVA算法练习题day67
java·python·学习·算法·leetcode
多则惑少则明1 天前
高频面试八股文用法篇(十五)如何高效操作字符串?
面试·职场和发展
陌路201 天前
S15 排序算法--归并排序
数据结构·算法·排序算法
智者知已应修善业1 天前
【c# 想一句话把 List<List<string>>的元素合并成List<string>】2023-2-9
经验分享·笔记·算法·c#·list