LC437.路径总和Ⅲ、LC207.课程表

 

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum路径 的数目。

路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

示例 1:

输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8
输出:3
解释:和等于 8 的路径有 3 条,如图所示。

示例 2:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:3
class Solution {Map<Long , Integer> prefixMap;int target;public int pathSum(TreeNode root, int sum) {prefixMap = new HashMap<>();target = sum;prefixMap.put(0L, 1);return recur(root, 0L);}private int recur(TreeNode node, Long  curSum) {if(node == null) {return 0;}int res = 0;curSum += node.val;res += prefixMap.getOrDefault(curSum - target, 0);prefixMap.put(curSum, prefixMap.getOrDefault(curSum, 0) + 1);int left = recur(node.left, curSum);int right = recur(node.right, curSum);res = res + left + right;prefixMap.put(curSum, prefixMap.get(curSum) - 1);return res;}
}

 利用了前缀和的思想,利用hashmap将所有前缀和记录下来,key为前缀和,value为次数。遍历树中的每一个节点,查找hashmap中是否存在(现在的前缀和-target)的值,若存在则说明在二叉树中存在一条路径,是的它们之间的差值为target。需要注意的是,这道题的node.val 在10^9范围内,且node数在1000范围内,因此前缀和可能会超过int型范围,因此要用long来存储前缀和。且由于一个节点必须是另一个节点的祖先节点的前途条件,因此每次处理完一个节点后,要做状态恢复,即在遍历完一个节点的所有子节点后,将其从map中除去。

LC207.课程表

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai必须 先学习课程  bi

  • 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1

请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false

示例 1:

输入:numCourses = 2, prerequisites = [[1,0]]
输出:true
解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。

示例 2:

输入:numCourses = 2, prerequisites = [[1,0],[0,1]]
输出:false
解释:总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0 ;并且学习课程 0 之前,你还应先完成课程 1 。这是不可能的。
class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {List<List<Integer>> adjacency = new ArrayList<>();for(int i = 0; i < numCourses; i++)adjacency.add(new ArrayList<>());int[] flags = new int[numCourses];for(int[] cp : prerequisites)adjacency.get(cp[1]).add(cp[0]);for(int i = 0; i < numCourses; i++)if(!dfs(adjacency, flags, i)) return false;return true;}private boolean dfs(List<List<Integer>> adjacency, int[] flags, int i) {if(flags[i] == 1) return false;if(flags[i] == -1) return true;flags[i] = 1;for(Integer j : adjacency.get(i))if(!dfs(adjacency, flags, j)) return false;flags[i] = -1;return true;}}

 这个解析比较好理解https://leetcode.cn/problems/course-schedule/solutions/18806/course-schedule-tuo-bu-pai-xu-bfsdfsliang-chong-fa/comments/759679icon-default.png?t=N7T8https://leetcode.cn/problems/course-schedule/solutions/18806/course-schedule-tuo-bu-pai-xu-bfsdfsliang-chong-fa/comments/759679

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

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

相关文章

【每日刷题】Day77

【每日刷题】Day77 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCR 159. 库存管理 III - 力扣&#xff08;LeetCode&#xff09; 2. LCR 075. 数组的相对排序 - 力…

代理ip匿名原理

代理IP匿名的原理基于代理服务器的工作方式。当用户使用代理服务器访问互联网时&#xff0c;请求数据会先发送到代理服务器&#xff0c;然后由代理服务器再向目标服务器发送请求。在这个过程中&#xff0c;代理服务器会将用户真实IP地址替换成代理服务器的IP地址&#xff0c;从…

Linux——passwd文件,grep,cut

/etc/passwd文件含义 作用 - 记录用户账户信息&#xff1a;共分为7段&#xff0c;使用冒号分割 含义 - 文件内容意义&#xff1a;账户名&#xff1a;密码代号x&#xff1a;UID&#xff1a;GID&#xff1a;注释&#xff1a;家目录&#xff1a;SHELL - 第7列/sbin/nologin&#x…

c++(三)

1. STL 1.1. 迭代器 迭代器是访问容器中元素的通用方法。如果使用迭代器&#xff0c;不同的容器&#xff0c;访问元素的方法是相同的&#xff1b;迭代器支持的基本操作&#xff1a;赋值&#xff08;&#xff09;、解引用&#xff08;*&#xff09;、比较&#xff08;和!&…

隐私计算实训营第二期第11讲组件介绍与自定义开发

首先给大家推荐一个博主的笔记&#xff1a;隐语课程学习笔记11- 组件介绍与自定义开发-CSDN博客 官方文档&#xff1a;隐语开放标准介绍 | 开放标准 v1.0.dev240328 | 隐语 SecretFlow 01 隐语开放标准 隐语开放标准是为隐私保护应用设计的协议栈。 目前&#xff0c;隐语开…

mysql8.0-学习

文章目录 mysql8.0基础知识-学习安装mysql_8.0登录mysql8.0的体系结构与管理体系结构图连接mysqlmysql8.0的 “新姿势” mysql的日常管理用户安全权限练习查看用户的权限回收:revoke角色 mysql的多种连接方式socket显示系统中当前运行的所有线程 tcp/ip客户端工具基于SSL的安全…

Wp-scan一键扫描wordpress网页(KALI工具系列三十二)

目录 1、KALI LINUX 简介 2、Wp-scan工具简介 3、信息收集 3.1 目标IP&#xff08;服务器) 3.2kali的IP 4、操作实例 4.1 基本扫描 4.2 扫描已知漏洞 4.3 扫描目标主题 4.4 列出用户 4.5 输出扫描文件 4.6 输出详细结果 5、总结 1、KALI LINUX 简介 Kali Linux 是一…

深入解析Tomcat:Java Web服务器(下)

深入解析Tomcat&#xff1a;Java Web服务器&#xff08;下&#xff09; 在上一篇文章中&#xff0c;我们介绍了Tomcat的基本概念、安装配置、以及基本使用方法。本文将继续探讨Tomcat的高级配置和性能调优。 5. 高级配置 5.1 配置文件详解 Tomcat的配置文件位于conf目录下&…

中北大学阿尔法编程之分治算法

整数划分问题 整数划分问题&#xff1a;将一个整数划分为若干个数相加 例子&#xff1a; 整数4 最大加数 4 44 134 1124 224 11114 一共五种划分方案 注意&#xff1a;134&#xff0c;314被认为是同一种划分方案 最后输出共几种划分方案 #include <stdio.h> …

Spring Boot中的模板引擎选择与配置

Spring Boot中的模板引擎选择与配置 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来聊聊Spring Boot中的模板引擎选择与配置。模板引擎是生成动态网页…

MySQL root密码丢失处理

没有记住MySQL数据库root用户默认密码(为初始化安装mysql时默认生成) 1)修改/etc/my.cnf文件,在[mysqld]的段中加上一句:skip-grant-tables 重启mysql服务 [root@localhost ~]# service mysqld restart 2)以无密码方式进入mysql: [root@localhost ~]# /usr/local/my…

STM32CubeIDE使用标准库

以STM32F030为例使用标准库文件。 1、新建工程&#xff0c;选择需要使用配置的型号。 2、在工程选型中&#xff0c;选择新建空工程。 3、新建空工程 新建完成&#xff0c;系统只有main函数和启动文件.s有用。 4、启动文件 启动文件&#xff0c;同样是一个汇编文件&#xf…

【Matlab函数分析】imread从图形文件读取图像

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

雅思词汇及发音积累 2024.6.30

交通 tavel agency /ˈeɪdʒənsi/ 旅行社 book the ticket 订票 motel 汽车旅店 hostel 青年旅社 passport 护照 visa 签证 make a reservation 预订 confirm a reservation 确认预订 book a room/table 预订房间/饭桌 fare 票价 cancel ones reservation 取消预订 toll 通行…

【Python】 数据分析中的常见统计量:众数

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 &#x1f3b5; 王心凌《那年夏天宁静的海》 众数&#xff08;Mode&#xff09;是统计学中另…

C++17中引入了什么新的重要特性

C17是C标准的一个重要版本&#xff0c;它在语言核心和标准库中引入了许多新特性和改进&#xff0c;使得C编程更加现代化和高效。以下是C17中引入的一些重要新特性&#xff1a; 语言核心新特性 结构化绑定&#xff08;Structured Bindings&#xff09;&#xff1a; 结构化绑定…

如何利用AI生成可视化图表(统计图、流程图、思维导图……)免代码一键绘制图表

由于目前的AI生成图表工具存在以下几个方面的问题&#xff1a; 大多AI图表平台是纯英文&#xff0c;对国内用户来说不够友好&#xff1b;部分平台在生成图表前仍需选择图表类型、配置项&#xff0c;操作繁琐&#xff1b;他们仍需一份规整的数据表格&#xff0c;需要人为对数据…

软件框架(Framework)是什么?

可实例化的、部分完成的软件系统或子系统&#xff0c;它为一组系统或子系统定义了统一的体系结构(architecture)&#xff0c;并提供了构造系统的基本构造块(building blocks)&#xff0c;还为实现具体功能定义了扩展点(extending points)。 框架实现了体系结构级别的复用。 其…

Hive 实操案例六:统计上传视频最多的用户 Top10 以及他们上传的视频观看次数在前 20 的视频

一、数据表结构 视频表 t_video 字段注释描述videoId视频唯一 id&#xff08;String&#xff09;11 位字符串uploader视频上传者&#xff08;String&#xff09;上传视频的用户名 Stringage视频年龄&#xff08;int&#xff09;视频在平台上的整数天category视频类别&#xff0…

源码编译安装PostgreSQL数据库

源码安装PostgreSQL数据库&#xff08;Linux 6&#xff09; 安装编译环境 yum -y install gcc make yum -y install libicu-devel pango pango-devel cairo cairo-devel readline-devel zlib-devel 安装PostgreSQL 解压 postgresql-16.0.tar.gz #tar -xzf postgresql-16.0.ta…