Leetcode 437. 路径总和 III

在这里插入图片描述

心路历程:

这道题递推并不难,但是有细节需要注意,主要就是区间可以不是根节点,以及结束不一定是叶子结点这两个限制。
其余的动态规划即可。

注意的点:

1、由于终点不一定是叶子结点,所以当递归的target等于0时,需要加1。
2、当node为空时,应该直接返回0,因为已经在上一步的递归中对恰好满足的进行了+1计算,满足循环不变量的原则。
3、由于起点不一定是根节点,所以需要对整个树进行dfs遍历。

解法:动态规划

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def pathSum(self, root: Optional[TreeNode], targetSum: int) -> int:
        # 以node为根节点的满足路径和的数量
        @cache
        def dp(node, targetSum_n):
            if not node:
                return 0  # 循环不变量,在后面return + 1中已经考虑到了这一点
            leftvalue = targetSum_n - node.val        
            if leftvalue == 0:
                return 1 + dp(node.left, 0) + dp(node.right, 0)
            else:
                return dp(node.left, leftvalue) + dp(node.right, leftvalue)
        res = 0
        def dfs(node):
            nonlocal res
            if not node:
                return
            res += dp(node, targetSum)
            dfs(node.left)
            dfs(node.right)
        dfs(root)
        return res

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

css字体加粗实例

确定字体粗细的是font-weight属性&#xff1b; 它的number值可取100-900&#xff1b; 如果把属性设为normal&#xff0c;相当于number为400&#xff1b; 设为bold&#xff0c;相当于number为700&#xff1b; html<b>或<strong>跟bold效果一样&#xff1b; <!…

基于velero和minio实现k8s数据的备份

1.30部署minio rootk8s-harbor:/etc/kubeasz/clusters/k8s-cluster1# docker run \ -d --restartalways -p 9000:9000 -p 9090:9090 –name minio -v /data/minio/data:/data -e “MINIO_ROOT_USERadmin” -e “MINIO_ROOT_PASSWORD12345678” quay.io/minio/minio server…

java实现UDP数据交互

1、回显服务器 服务器端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UDP_Server {private DatagramSocket socketnull;public UDP_Server(int port) throws SocketExcepti…

工地安全监测识别摄像机

工地安全监测识别摄像机是一种在建筑工地和施工现场广泛使用的智能监控设备&#xff0c;主要用于监测施工过程中可能出现的安全隐患和违规行为&#xff0c;以确保工地人员和设备的安全。通过高清摄像头、智能算法和远程监控系统的结合&#xff0c;该摄像机可以实时监测工地各个…

4.8作业

1、使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…

Qt | Q_PROPERTY属性和QVariant 类

一、属性基础 1、属性与数据成员相似,但是属性可使用 Qt 元对象系统的功能。他们的主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值…

EditPlus来啦(免费使用!)

hello&#xff0c;我是小索奇 今天推荐一款编辑器&#xff0c;是索奇学习JavaSE时入手滴&#xff0c;非常好用哈&#xff0c;小索奇还是通过老杜-杜老师入手滴&#xff0c;相信很多人也是通过老杜认识嘞&#xff0c;来寻找破解版或者准备入手这个间接使用的编辑器~ EditPlus是…

Ubuntu22.04修改默认窗口系统为X11

Ubuntu22.04安装默认窗口系统为Wayland&#xff08;通过设置->关于可以看到&#xff09;。 一、用Ubuntu on Xorg会话登录 用户登录时&#xff0c;点“未列出”&#xff0c;输入用户名后&#xff0c;在登录界面底部的齿轮图标中&#xff0c;选择 "Ubuntu on Xorg&quo…

windows下使用ZLMediaKit-API+FFmpeg+opengl拉取解码播放流媒体

ZLMediaKit简介 ZLMediaKit是一个基于C11的高性能运营级流媒体服务框架&#xff0c;和SRS类似&#xff0c;功能强大&#xff0c;性能优异&#xff0c;提供多种支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/…

解决idea种maven依赖时明明有包,但是一直提示 Cannot resolve com.grandtech:gny-common:0.0.7

1、先看提示问题 &#xff0c;Cannot resolve com.grandtech:gny-common:0.0.7&#xff0c; 2、依赖我也是是没有问题 3、在maven库中的包也是要来的新的别人能运行的。但是放进去就是无法解析。 解决办法&#xff1a;在idea中直接&#xff0c;用mvn命令装载&#xff1a; ①…

设计模式浅析(十一) ·状态模式

设计模式浅析(十一) 状态模式 日常叨逼叨 java设计模式浅析&#xff0c;如果觉得对你有帮助&#xff0c;记得一键三连&#xff0c;谢谢各位观众老爷&#x1f601;&#x1f601; 状态模式 概念 状态模式 Java中的状态模式&#xff08;State Pattern&#xff09;是一种行为型…

Vue3中对v-md-editor编辑器的集成使用

效果展示&#xff1a; 首先安装需要的包 npm i kangc/v-md-editornext -S 在main.js中进行全局配置 import VMdEditor from kangc/v-md-editor/lib/codemirror-editor; import kangc/v-md-editor/lib/style/codemirror-editor.css; import githubTheme from kangc/v-md-ed…

学透Spring Boot — 005. 深入理解 Spring Boot Starter 依赖管理

前面的文章直观的展示了&#xff0c;使用Spring Boot 集成 Hibernate 和手动集成 Hibernate 之间差距。 一个比喻 工作中使用过Spring Boot一段时间后&#xff0c;我越来越感觉到Spring Boot Starter带来的便利性。 使用手动集成 Hibernate&#xff0c; 就像去电脑城配电脑&…

怎么防止文件被拷贝,复制别人拷贝电脑文件

怎么防止文件被拷贝&#xff0c;复制别人拷贝电,脑文件 防止文件被拷贝通常是为了保护敏感数据、知识产权或商业秘密不被未经授权的人员获取或传播。以下列出了一系列技术手段和策略&#xff0c;可以帮助您有效地防止文件被拷贝。 1. 终端管理软件&#xff1a; 如安企神、域智…

IP地址到底有什么用

IP地址在计算机网络中的作用至关重要&#xff0c;它不仅是设备在网络中的唯一标识&#xff0c;更是实现网络通信、网络管理和安全的关键要素。下面&#xff0c;我们将从多个方面详细阐述IP地址的作用。 首先&#xff0c;IP地址作为设备的唯一标识&#xff0c;为网络通信提供了…

ssm032基于Java的汽车客运站管理系统的设计与实现+jsp

汽车客运站管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对汽车客运站售票信息管理混乱&…

MP4视频如何转OGV视频格式?视频格式转换的方法

一&#xff0c;什么是OGV视频格式 OGV是一个使用OGG开源格式的容器。 OGG不受软件专利的限制&#xff0c;这是其创建的主要目标之一。 OGV格式用于存储带或不带音频的视频流&#xff0c;而视频流又可以用Opus&#xff0c;Vorbis&#xff0c;Theora或Speex算法压缩。该格式用于…

门电路知识点总结

目录 一、基本门电路 &#xff08;Gate Cricuit&#xff09; 1.与电路 2.或电路 3.非电路 二、复合门电路 &#xff08;Composite gate circuit&#xff09; 1.与非门 2.或非门 3.与或非门 4.异或门 5.同或门 三、CMOS门电路 (Complementary Metal-Oxide-Semiconduc…

J基于微信小程序的电影订票、电影购票小程序

文章目录 1 **摘 要**2 技术简介**3 系统功能设计****第4章 系统设计****4.1系统结构设计** 第5章 系统实现**5.1管理员服务端功能模块**5.2用户客户端功能模块 结 论6 推荐阅读7 源码获取&#xff1a; 1 摘 要 本文从管理员、用户的功能要求出发&#xff0c;电影订票系统小程…

PSO-SVM,基于PSO粒子群算法优化SVM支持向量机回归预测(多输入单输出)-附代码

PSO-SVM是一种结合了粒子群优化&#xff08;Particle Swarm Optimization, PSO&#xff09;算法和支持向量机&#xff08;Support Vector Machine, SVM&#xff09;的方法&#xff0c;用于回归预测问题。下面我将解释PSO-SVM的原理&#xff1a; 1、支持向量机&#xff08;SVM&a…