刷题之路径总和Ⅲ(leetcode)
路径总和Ⅲ

这题和和《为K的数组》思路一致,也是用前缀表。
代码调试过,所以还加一部分用前序遍历数组和中序遍历数组构造二叉树的代码。
#include<vector>
#include<unordered_map>
#include<iostream>
using namespace std;
//Definition for a binary tree node.
struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};class Solution {
private:unordered_map<long long, int>map;int dfs(TreeNode* root, long long cur, int targetSum){if (root == NULL){return 0;}int count = 0;cur += root->val;if (map.find(cur - targetSum) != map.end()){count += map[cur - targetSum];}map[cur]++;int leftcount = dfs(root->left, cur, targetSum);int rightcount = dfs(root->right, cur, targetSum);map[cur]--;//因为路径总和只是针对同一个头结点,所以不是同一个头结点时需要回溯return count + leftcount + rightcount;}
public:int pathSum(TreeNode* root, int targetSum) {map[0] = 1;return dfs(root, 0, targetSum);}
};class tree {
private:TreeNode* build(vector<int>& preorder, vector<int>& inorder){if (preorder.size() == 0)return NULL;//找到根节点int rootvalue = preorder[0];TreeNode* root = new TreeNode(rootvalue);//叶子节点if (preorder.size() == 1)return root;//区分左右子树位置int index = 0;for (int i = 0; i < inorder.size(); i++){if (inorder[i] == rootvalue){index = i;break;}}vector<int>left_in(inorder.begin(), inorder.begin() + index);vector<int>right_in(inorder.begin() + index + 1, inorder.end());vector<int>left_pre(preorder.begin() + 1, preorder.begin() + 1 + left_in.size());vector<int>right_pre(preorder.begin() + 1 + left_in.size(), preorder.end());root->left = build(left_pre, left_in);root->right = build(right_pre, right_in);return root;}
public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {return build(preorder, inorder);}
};int main()
{vector<int>inorder = {3,3,-2,5,2,1,10,-3,11};vector<int>preorder = { 10,5,3,3,-2,2,1,-3,11 };int targetsum = 8;tree mytree;TreeNode* root = mytree.buildTree(preorder,inorder);Solution solution;int result = solution.pathSum(root, targetsum);cout << result << endl;
}
相关文章:
刷题之路径总和Ⅲ(leetcode)
路径总和Ⅲ 这题和和《为K的数组》思路一致,也是用前缀表。 代码调试过,所以还加一部分用前序遍历数组和中序遍历数组构造二叉树的代码。 #include<vector> #include<unordered_map> #include<iostream> using namespace std; //Def…...
MongoDB 原子操作:确保数据一致性和完整性的关键
在 MongoDB 中,原子操作是指可以一次性、不可分割地执行的数据库操作。这些操作能够保证在多个并发操作中不会出现数据不一致或者丢失的情况,确保数据库的数据完整性和一致性。 基本语法 MongoDB 的原子操作通常与更新操作相关,其基本语法如…...
2024上半年软考高级系统架构设计师回顾
本博客地址:https://security.blog.csdn.net/article/details/139238685 2024年上半年软考在5月25-26日举行,趁着时间刚过去记忆还在,简单写一点总结。 关于考试形式:上机考试(以后也都是机考)࿰…...
SQL注入绕过技术深度解析与防御策略
引言 在Web安全领域,SQL注入攻击一直是一个棘手的问题。攻击者通过SQL注入手段获取敏感数据、执行恶意操作,甚至完全控制系统。尽管许多防御措施已被广泛采用,但攻击者仍不断开发新的绕过技术。本文将深度解析SQL注入的绕过技术,…...
Redis教程(十六):Redis的缓存穿透、缓存击穿、缓存雪崩
传送门:Redis教程汇总篇,让你从入门到精通 缓存穿透 描述 用户需要查询一个数据,例如要查一张ASSET_CODE 999999的卡片,查询redis中没有,就直接去请求数据库,数据库中也不存在对应的数据,返回…...
如何实现一个高效的单向链表逆序输出?
实现单向链表逆序输出的关键点有两个: 反转链表本身 遍历反转后的链表并输出首先,我们来看如何反转链表: class Node:def __init__(self, data):self.data dataself.next Nonedef reverse_list(head):"""反转单向链表"""prev Nonecurrent h…...
使用 Go 实现 HelloWorld 程序,并分析其结构
在学习任何新的编程语言时,编写一个 “Hello, World” 程序通常是最初的入门步骤。这不仅是一个传统,也是一种快速了解语言基本语法和运行机制的有效方法。对于 Go 语言,这个过程不仅可以帮助新手快速入门,还提供了一个窗口&#…...
机器学习:在Python中sklearn库的使用,纯干货!12个小时的整理!
无监督学习是在没有标签的数据上训练的。其主要目的可能包括聚类、降维、生成模型等。 以下是 6 个重要的无监督学习算法,这些算法都可以通过使用sklearn(Scikit-learn)库在Python中很好地处理: 目录 K-Means 聚类 层次聚类 …...
XSS 攻击
XSS 攻击简介 定义: XSS(跨站脚本攻击)是一种网络安全漏洞,攻击者通过在 Web 页面中注入恶意代码,利用用户的浏览器执行这些恶意脚本,从而实施攻击。 解决方案: 过滤用户输入: 对…...
.Net Core 中间件与过滤器
过滤器这个是.Net MVC旧有的功能,中间件这个概念是新出的, ASP.NET Core只是完成了HTTP请求调度、报文解析等必要的工作,像检查用户身份、设置缓存报文头等操作都是在中间件中完成,中间件就是ASP.NET Core的一个组件,…...
【ARMv7-A】——WFI(wait for interrupt)
文章目录 WFI基本原理使用场景多任务模型注意事项代码实例linux 内核中的 WFI 指令不使用 WFI 指令测试使用 WFI 指令测试WFI WFI 即 Wait for interrupt,常用于低功耗。 WFI (Wait for interrupt) 和 WFE (Wait for event) 是两个让 ARM 核进入 low-power standby 模式的指…...
92. 反转链表 II
题目描述 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 示例 1: 输入:head [1,2,3,4,5], left 2, right 4 输出&#…...
Modbus工业网关
随着工业自动化程度的不断提高,设备之间的数据通信与交互变得至关重要。在这一背景下,Modbus协议凭借其简单、可靠、开放的特点,成为了工业自动化领域中最常用的通信协议之一。而HiWoo Box网关作为一款支持Modbus协议的工业网关设备ÿ…...
c++——模板初始识
1.函数模板 我们经常用到Swap函数交换两个值。由于需要交换的数据的类型不同,我们就需要写不同参数类型的同名函数,也就是函数重载: 然而这三个函数的逻辑是一样的,写这么多有些多此一举,通过函数模版可以写一个通用…...
帆软生成csv文件
帆软官网提供了导出csv文件的插件,需要下载指定版本的插件 请选择具体的详情点击官网介绍:文档介绍 插件地址:插件地址...
12.Redis之补充类型渐进式遍历
1.stream 官方文档的意思, 就是 stream 类型就可以用来模拟实现这种事件传播的机制~~stream 就是一个队列(阻塞队列)redis 作为一个消息队列的重要支撑属于是 List blpop/brpop 升级版本.用于做消息队列 2.geospatial 用来存储坐标 (经纬度)存储一些点之后,就可以让用户给定…...
品牌做电商控价的原因
品牌控价确实是一项至关重要的任务,它关乎着品牌形象、市场定位以及长期发展的稳定性。在电商平台上,价格的公开性和透明度使得消费者、经销商和其他渠道参与方都能够轻易地进行价格比较。因此,品牌方必须对电商渠道的价格进行严格的管控&…...
安全面试中的一个基础问题:你如何在数据库中存储密码?
3分钟讲解。 上周的面试故事 职位:初级安全工程师,刚毕业。 开始面试。 我:“这里你提到对数据安全有很好的理解。你能举例说明哪些方面的数据安全吗?” A:“当然。例如,当我们构建一个系统时,会…...
【python深度学习】——torch.min()
【python深度学习】——torch.min 1. torch.min()1.1 计算整个张量的最小值1.2 沿特定维度计算最小值1.3 比较两个张量 1. torch.min() torch.min()接受的参数如下: input: 输入的张量。dim: 沿指定维度寻找最小值。如果指定了该参数,返回一个元组,其中…...
华为校招机试 - 最久最少使用缓存(20240508)
题目描述 无线通信移动性需要在基站上配置邻区(本端基站的小区 LocalCell 与周边邻基站的小区 NeighborCelI 映射)关系, 为了能够加速无线算法的计算效率,设计一个邻区关系缓存表,用于快速的通过本小区 LocalCell 查询到邻小区 NeighborCell。 但是缓存表有一定的规格限…...
Display Driver Uninstaller (DDU) 终极指南:显卡驱动彻底清理的完整解决方案
Display Driver Uninstaller (DDU) 终极指南:显卡驱动彻底清理的完整解决方案 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/displa…...
128、运动控制中的软件架构:状态机设计
128、运动控制中的软件架构:状态机设计 从一次电机“鬼畜”说起 去年调试一个六轴机械臂的轨迹规划,上位机发来一条“MoveL”指令,电机本该平滑走直线,结果在某个中间点突然抽搐——速度跳变、电流飙升,像被电击了一样。我盯着逻辑分析仪的波形看了三个小时,最后发现是…...
Unity预加载:减少游戏中首次加载资源时的卡顿
遇到的问题,如标题所示,所以写了如下模块。模块功能就是初始化时候,加载零散/文件夹的物体,代码如下:#region 启动预加载模块/// <summary> 预加载间隔(分帧防卡顿) </summary>priv…...
为什么你的ElevenLabs马来文输出总像“机器人朗读”?资深语音架构师拆解4层韵律建模断层与3个修复级prompt模板
更多请点击: https://intelliparadigm.com 第一章:为什么你的ElevenLabs马来文输出总像“机器人朗读”?资深语音架构师拆解4层韵律建模断层与3个修复级prompt模板 马来语(Bahasa Melayu)虽属声调中性语言,…...
影刀RPA 企业级专题篇:多租户自动化平台与账号环境隔离设计
影刀RPA 企业级专题篇:多租户自动化平台与账号环境隔离设计 作者:林焱 很多自动化系统前期。 其实都默认只有一个“使用方”。 几个流程。 几台执行机。 统一浏览器环境。 前期问题不大。 但真正进入企业级阶段以后。 系统会逐渐出现࿱…...
终极指南:如何用Continue实现AI驱动的代码检查与PR自动化审查
终极指南:如何用Continue实现AI驱动的代码检查与PR自动化审查 【免费下载链接】continue ⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI 项目地址: https://gitcode.com/GitHub_Trending/co/continue Contin…...
《Sysinternals实战指南》进程和诊断工具学习笔记(8.24):Handle——谁占着不放?句柄泄漏排查、强制解锁与检索技巧
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
【Linux驱动开发】第10天:设备树零基础入门——DTS/DTB/DTC全解+编译流程
目录 为什么需要设备树?传统驱动的终极痛点DTS/DTB/DTC 大白话定义核心区别三者关系完整编译流程图最简单的DTS示例语法解析设备树编译与反编译实操命令内核如何加载和使用设备树核心总结面试必背考点 1. 为什么需要设备树?传统驱动的终极痛点 在设备树…...
纤维增强复合材料多轴3D打印的神经网络协同优化
1. 纤维增强复合材料与多轴3D打印技术概述纤维增强复合材料(Fiber-Reinforced Composites)因其独特的力学性能组合——高强度、高刚度和低密度,已成为现代工程设计中不可或缺的材料选择。这类材料由高强度纤维(如碳纤维、玻璃纤维…...
提示词失效?Midjourney印象派出图不稳的8大陷阱,资深AIGC架构师逐帧解析SD/MJ风格迁移差异
更多请点击: https://codechina.net 第一章:提示词失效的本质:当语义熵击穿Midjourney的隐空间边界 当“cyberpunk cat wearing neon sunglasses, ultra-detailed, 8k”生成结果突然坍缩为 a blurry humanoid silhouette with cat ears&…...
