[python 刷题] 437 Path Sum III

news2024/11/26 22:35:27

[python 刷题] 437 Path Sum III

之前有写过 Path Sum I & II, leetcode 112 & 113,虽然使用 JS 写的,不过 python 的实现也更新了一下

题目如下:

Given the root of a binary tree and an integer targetSum, return the number of paths where the sum of the values along the path equals targetSum.

The path does not need to start or end at the root or a leaf, but it must go downwards (i.e., traveling only from parent nodes to child nodes).

Path Sum III 的解法肯定就是 I & II 的进阶版,I & II 中求的是从 root -> leaf 的和,因此好算一些,只需要遍历到 leaf,然后算一下 node.val === targetSum 就可以获取结果,不过 III 求的是任意一段和,问是不是能等同于 targetSum

在这里插入图片描述

如果之前做过 leetcode 560 和为 K 的子数组, 的话,就会发现这道题就非常的熟悉, leetcode 560 和为 K 的子数组, 求的也是任意子字符串和为 k 的数量,换言之,可以理解成 437 是 leetcode 560 和为 K 的子数组, 的进阶版本,相当于结合了 leetcode 560 和为 K 的子数组, 的解法和二叉树

因此解题思路也是一样的,同样都是使用 prefix sum + hash table 去解题,这里主要需要注意一点的是,不同分支上的 dict 不能串起来,如题目中的 targetSum 是 8,那么下面这一条线路,虽然加起来的结果也是 8,但是因为在不同的树上,所以不是合法的路径:

在这里插入图片描述

随后套用 leetcode 560 和为 K 的子数组, 的解法使用 prefix sum 去解即可

代码如下:

class Solution:
    def pathSum(self, root: Optional[TreeNode], k: int) -> int:
        paths = 0

        def helper(root, currSum):
            if not root: return

            nonlocal paths

            currSum += root.val
            paths += m.get(currSum - k, 0)

            m[currSum] += 1
            helper(root.left, currSum)
            helper(root.right, currSum)

            m[currSum] -= 1

        paths = 0
        m = defaultdict(int)
        m[0] = 1

        helper(root, 0)

        return paths

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

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

相关文章

解释一下Node.js中的事件循环(event loop)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

目前安卓、鸿蒙、澎湃的关系

1、了解AOSP是什么 AOSP全名为Android Open-Source Project,中文为安卓开源项目,开源即开放源代码。Android是一个基于Linux,由Google主导的开源系统。 2、AOSP谁的贡献最大? 3、华为的鸿蒙、小米的澎湃是套壳安卓吗&#xff1…

docker基础用法

docker基础用法 什么是docker docker中的容器: lxc --> libcontainer --> runC OCI Open Container-initiative 由Linux基金会主导于2015年6月创立旨在围绕容器格式和运行时制定一个开放的工业化标准contains two specifications the Runtime Specificat…

类的基本概念

类的概念是为了让程序设计语言能更清楚地描述日常生活中的事物。类是对某一类事物的描述,是抽象的、概念上的定义;而对象则是实际存在的属该类事物的具体个体,因而也称为实例(instance)。下面用一个现实生活中的例子来…

远程管理SSH服务

一、搭建SSH服务 1、关闭防火墙与SELinux # 关闭firewalld防火墙 # 临时关闭 systemctl stop firewalld # 关闭开机自启动 systemctl disable firewalld ​ # 关闭selinux # 临时关闭 setenforce 0 # 修改配置文件 永久关闭 vim /etc/selinux/config SELINUXdisabled 2、配置…

XShelll-修改快捷键-xftp-修改编辑器

文章目录 1.XShelll-修改快捷键2.Xftp-修改文本编辑器3.总结 1.XShelll-修改快捷键 工具>选项 鼠标键盘,右键编辑,新建快捷键。 复制粘贴改成shiftc,shiftv。更习惯一些。 2.Xftp-修改文本编辑器 xftp修改服务器文件默认的编辑器,是记…

2.3 - 网络协议 - ICMP协议工作原理,报文格式,抓包实战

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ICMP协议 1、ICMP协议工作原理2、ICMP协议报文格式…

mysql 全文检索 demo

mysql5.6.7之后开始支持中文全文检索一直没用过,这次试试。 创建表 CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR (200),body TEXT,FULLTEXT (title, body) WITH PARSER ngram ) ENGINE INNODB DEFAULT CHARSETut…

维度使用AOP添加Name

1.添加文件 2.DimName注解,实体使用 package annotation;import MateTypeEnum;import java.lang.annotation.*;/*** 字典翻译注解** author pw*/ Documented Target(ElementType.FIELD)// 可用在方法名上 Retention(RetentionPolicy.RUNTIME)// 运行时有效 public interface…

Angew. Chem. Int. Ed.:Pt/Cu(111)上持续的氢溢出:气体诱导化学过程的动态观察

氢溢出是指游离氢原子从活性金属位点向相对惰性催化剂载体的表面迁移,在涉及氢的催化过程中起着至关重要的作用。然而,对氢原子如何从活性位点溢出到催化剂载体上的全面理解仍然缺乏。 基于此,福州大学林森教授等人报道了利用基于DFT的机器学…

Git 行结束符:LF will be replaced by CRLF the next time Git touches it问题解决指南

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

访问者模式-操作复杂对象结构

商场里有许多的店铺,大致分为服装区、饮食区及休闲区,每天都会有络绎不绝的不同角色(打工人、学生、有钱人)的人来逛商场。商场想开发个系统用来模拟这些人的在这些店铺的行为。 public class SuperMarket {public static void m…

Bi-TTCOF-Zn助力CO2还原制CO

精确调控氧化还原单元的组分、空间取向或连接模式对于深入了解高效的人工光合整体反应至关重要,但对于异质结构光催化剂而言,还很难实现。 基于此,华南师范大学兰亚乾教授和陈宜法教授等人报道了一系列用于人工光合综合反应的氧化还原分子结…

从零入门Chrome插件开发

什么是 Chrome 插件 谷歌浏览器在推出时就以其快速、安全和简洁的特点受到了广大用户的欢迎。随着浏览器的不断发展,谷歌为用户提供了插件开发平台,使开发者能够为浏览器添加各种功能和定制化选项。从此,插件成为了提升用户体验和个性化的重…

02|LangChain | 从入门到实战 -六大组件之Models IO

by:wenwenC9 上一篇文章 01|LangChain | 从入门到实战-介绍 一、Models IO 组成及其说明 与语言模型的交互,比如在线GPT系列,或各种离线模型 任何语言模型应用程序的核心元素都是XXX模型。LangChain 提供了与任何语言模型交互的…

[第二章—Spring MVC的高级技术] 2.1Spring MVC配置的替代方案

7.1.1 自定义DispatcherServlet配置 例如,在本章稍后的内容中(7.2节),我们将会看到如何在Spring MVC中处理multipart请求和文件上传。 如果计划使用Servlet 3.0对multipart配置的支持,那么需要使用DispatcherServlet的…

​软考-高级-信息系统项目管理师教程 第四版【第16章-项目采购管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第16章-项目采购管理-思维导图】 课本里章节里所有蓝色字体的思维导图

内窥镜项目

★ 手持pad内窥镜项目 项目描述:3D电子内窥镜软件项目是一个基于BS(浏览器服务器)架构的项目,旨在实现对内窥镜设备的远程控制和高级功能操作。该项目允许操作员使用平板电脑手动触摸屏上的按钮、外部按键或脚踏板 来控制内窥镜设…

[移动通讯]【Carrier Aggregation-11】【5G NR Carrier Aggregation (CA) basics 】

前言: 参考: RF Wireless world 里面的 《5G/NR - Carrier Aggregation》 《5G NR Carrier Aggregation (CA) basics | Carrier Aggregation frequency bands》 This page describes 5G NR Carrier Aggregation (CA) basics. It mentions Carrier Aggre…

Redis 的几种集群对比

文章目录 一、对比分析二、优缺点对比三、总结 如果您对Redis的了解不够深入请关注本栏目,本栏目包括Redis安装,Redis配置文件说明,Redis命令和数据类型说明,Redis持久化配置,Redis主从复制和哨兵机制,Redi…