437.路径总和III

news2024/11/15 11:21:15

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

法一:深度优先遍历,递归

  • rootSum(p,val)计算节点p向下且路径和为val的路径和
  • rootSum(p,val)=rootSum(p->left,val-pval)+rootSum(p->right,val-pval)
  • 遍历二叉树所有节点的rootSum并求和
class Solution {
public:
    int rootSum(TreeNode* node,long target){
        if(!node){
            return 0;
        }
        int ret=0;
        int val=node->val;
        if(val==target){
            ++ret;
        }
        ret+=rootSum(node->left,target-val);
        ret+=rootSum(node->right,target-val);
        return ret;
    }

    int pathSum(TreeNode* root, int targetSum) {
        if(!root){
            return 0;
        }
        int ret=0;
        ret=rootSum(root,targetSum);
        ret+=pathSum(root->left,targetSum);
        ret+=pathSum(root->right,targetSum);
        return ret;
    }
};

法二:前缀和+深度优先遍历

  • 根节点root到node的前缀和sum
  • 已保存的前缀和中查找是否存在curr-target
class Solution {
public:
    unordered_map<long long,int>prefix;

    int dfs(TreeNode* node,long long sum,int target){
        if(!node) return 0;

        int ret=0;
        sum+=node->val;
        if(prefix.count(sum-target)){
            ret=prefix[sum-target];
        }

        ++prefix[sum];
        ret+=dfs(node->left,sum,target);
        ret+=dfs(node->right,sum,target);
        --prefix[sum];

        return ret;
    }
    int pathSum(TreeNode* root, int targetSum) {
        prefix[0]=1;
        return dfs(root,0,targetSum);
    }    
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1074959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud之Resilience4j熔断器源码解析

Hystrix官方已经停止开发了&#xff0c;Hystrix官方推荐使用新一代熔断器作为Resilience4j。作为新一代的熔断器&#xff0c;Resilience4j有很多优势&#xff0c;比如依赖少&#xff0c;模块化程度较好等优势。 Resilience4j是受Hystrix启发而做的熔断器&#xff0c;通过管理远…

Stm32_标准库_9_TIM

频率(HZ)是频率的基本单位1HZ是1s的倒数 STM32F103C8T6一般情况给定时器的内部时钟都是72MHz&#xff08;系统主频率&#xff09; TIM基本构成 计数器、预分频器、自动化重装 // 都是16位其中计数器、自动化重装&#xff0c;都是16位换算成10进制范围为[0, 655536] 时间 1 /…

【Es基础入门必看】

Es基础入门 1. ElasticSearch的认知1.1 搜索1.2 倒排索引1.3 Lucene1.4 ES基本概念 1. ElasticSearch的认知 ElasticSearch&#xff08;以下简称ES&#xff09;是什么&#xff1f;按照官网的定义&#xff0c;ElasticSearch是一个分布式的、RESTFUL风格的搜索引擎。 1.1 搜索…

浅谈go语言的错误处理

前言 本文是探讨的是"go语言中如何优雅地处理错误" 观察go语言源码 在go语言的内置函数中,很多的函数都会返回一个error,特别是在与文件读写操作的相关的函数的时候,基本上都会有返回error,返回这个的好处是用来辨别是否出错,把结果直接告诉你,以便你进行下一步操…

64.最小路径和

法&#xff1a;动态规划 第一行的元素&#xff0c;只有通过左侧右移才能到达&#xff1b;第一列的元素&#xff0c;只有通过上方的下移才能到达。其他位置元素&#xff1a;比较从上方元素向下移动的路径和和左侧元素向右移动的路径和的较小值dp[i][j]&#xff1a;到达(i,j)位置…

【数据分类】基于麻雀搜索算法优化支持向量机的数据分类方法 SSA-SVM分类算法【Matlab代码#61】

文章目录 【可更换其他群智能算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. 麻雀搜索算法&#xff08;SSA&#xff09;2. 支持向量机&#xff08;SVM&#xff09;3. SSA-SVM分类模型4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他群智能算法&#…

Jmeter 链接MySQL测试

1.环境部署 1.1官网下载MySQL Connector https://dev.mysql.com/downloads/connector/j/ 1.2 解压后&#xff0c;将jar放到jmeter/lib目录下 1.3 在测试计划中添加引用 2.脚本设置 2.1设置JDBC Connection Configuration 先添加一个setUp线程中&#xff0c;在setUp中添加“…

Git知识整理(持续更新)

一、跨系统配置之CSLF和LF Windows系统中&#xff0c;从第n行到第n1行&#xff0c;用的是回车\r加换行\n&#xff0c;即Carriage Return和Line Feed。 Mac和Linux系统中&#xff0c;从第n行到第n1行&#xff0c;只用了换行\n&#xff0c;即Line Feed。 git有CRLF机制&#xf…

基于springboot实现准妈妈孕期交流平台项目【项目源码+论文说明】

基于springboot实现准妈妈孕期交流平台演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;准妈妈孕期交流平台当然也不能排除在外。准妈妈孕期交流平台是以实际运用为开…

【UE5 Cesium】16-Cesium for Unreal 建立飞行跟踪器(1)

目录 步骤 一、关卡准备 二、UE读取存有航线点迹的CSV文件 三、程序化CesiumCartographicPolygon的点 步骤 一、关卡准备 1. 在Cesium For Unreal官网找到“San Francisco international Airport”的经纬度如下&#xff1a; 在“CesiumGeoreference”中设置相应的经纬度 …

软件开发进度的有效管控方法和技巧

对于软件开发而言&#xff0c;进度把控十分重要。如果无法即时跟踪进度&#xff0c;就无法获知项目计划的进展&#xff0c;团队通常会在此过程中失去动力。 Zoho Projects 结合IT行业特点运用项目管理技术、理念和方法&#xff0c;包括9大知识领域&#xff08;项目综合、范围、…

各类高危漏洞介绍及验证方式教程(一)

本期整理的漏洞验证教程约包含50多类漏洞&#xff0c;分多个章节编写&#xff0c;可从以下链接获取全文&#xff1a; 各类高危漏洞验证方式.docx (访问密码: 1455) 搭建dvwa测试环境基础教程.docx(访问密码: 1455) web逻辑漏洞挖掘快速入门基础教程.docx(访问密码: 1455) 01 Ca…

【面试算法——动态规划 21】不同的子序列(hard) 通配符匹配(hard)

115. 不同的子序列 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 链接&#xff1a;&#xff1a;https://leetcode.cn/problems/distinct-subsequences/ 示例 1&#xff1a; 输入&#xff1a;s “rab…

FreeRTOS自我救赎1之基本知识

每次写博客都是先用完了知识再写&#xff0c;也是很无奈&#xff0c;因为面试的时候我只会操作但我不会说&#xff0c;多写博客才能会“吹”。 1.目录结构 不好评价&#xff0c;我的目录结构是cubemx生成的&#xff0c;其中BSP_Device存储了一些模块化后的中间层代码 1.1核心…

【Java 进阶篇】使用Druid数据库连接池工具类进行测试

在前面的博客中&#xff0c;我们已经介绍了如何配置和使用Druid数据库连接池。现在&#xff0c;让我们来学习如何编写测试代码&#xff0c;以确保Druid连接池的正常运行。 步骤1&#xff1a;创建测试表 首先&#xff0c;我们需要创建一个测试用的数据库表&#xff0c;以便在示…

MongoDB——centOS7安装mongodb5.0.21版本服务端(图解版)

目录 一、mongodb官网下载地址二、安装步骤2.1、上传安装包并解压2.2、配置环境变量2.3、创建目录并授权2.4、创建配置文件2.5、启动MongoDB 三、开放端口四、客户端连接 一、mongodb官网下载地址 mongodb官网下载地址&#xff1a;https://www.mongodb.com/try/download/commu…

Android启动式服务

Github: https://github.com/MADMAX110/Joke 服务是与活动类似的应用组件&#xff0c;只不过服务没有用户界面。 使用服务可以一直在后台做某些事情&#xff0c;比如下载一个大文件&#xff0c;播放一段音乐或者监听来自服务器的一个消息。 有三种类型的服务&#xff1a; 1、启…

【UiPath】解决办法:There are no Unattended runtimes configured on this machine.

本文收录于【#摸鱼玩 UiPath】专栏中&#xff0c;记录在 RPA&#xff08;UiPath&#xff09;使用过程中&#xff0c;遇到的问题以及解决办法。 更多关于 RPA 技术内容敬请关注&#xff1a;【#摸鱼玩 UiPath】专栏。 文章目录 问题描述分析原因解决办法文末参考RPA 技术 UiPath…

【自动控制原理】Simulink搭建仿真模型(信号发生器、比较点、传递函数、示波器)

目录 一、前言 二、Simulink~自动控制原理 1、Simulink官方教程 2、开环系统、闭环系统 a. 开环系统 加干扰 b. 闭环系统 三、Simulink模型仿真 1、信号发生器 a. 阶跃信号发生器 b. 脉冲信号发生器 2、比较点 3、传递函数 a. 比例环节&#xff08;Proportional …