LeetCode 21. 合并两个有序链表 | C++语言版

news2024/11/20 2:21:08

LeetCode 21. 合并两个有序链表 | C++语言版

    • LeetCode 36: 两个链表的第一个公共结点
      • 题目描述
      • 解题思路
        • 思路一:使用前缀和
          • 代码实现
          • 运行结果
          • 参考文章:
        • 思路二:减少遍历节点数
          • 代码实现
          • 运行结果
          • 参考文章:

LeetCode 36: 两个链表的第一个公共结点

题目描述

题目地址:437. 路径总和 III

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

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

解题思路

思路一:使用前缀和

代码实现

C++

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    //HashMap的key是前缀和,value是前缀和为这个值的路径数量
    Map<Long,Integer> prefixMap;
    int target;

    //遍历二叉树,对每个节点,记录前缀和的同时,返回当前找到和为target的路径数量。参数curSum表示node节点之前的前缀和。
    private int recur(TreeNode node,Long curSum){
        if(node==null) return 0;

        //res记录路径数量
        int res=0;
        //curSum记录前缀和,遍历到当前节点的时候就加上这个节点的值。
        curSum+=node.val;
        
        //getOrDefault() 获取指定key对应的value,如果找不到key,则返回指定的默认值
        //res就是路径数量。curSum是根节点到当前节点的前缀和(两节点间的路径和 = 两节点的前缀和之差),如果哈希表中能找到之前存在过路径的前缀和为curSum - target,说明可以找到value条路径使其路径和为target
        res+=prefixMap.getOrDefault(curSum-target,0);
        //把当前节点的前缀和也加入到哈希表中,如果已经存在了就给value + 1
        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;
    }

    //使用前缀和
    public int pathSum(TreeNode root, int targetSum) {
        prefixMap=new HashMap<>();
        target=targetSum;

        //key是前缀和,value是前缀和为这个值的路径数量。(因为可能好几条路径前缀和是同一个值。)。这里表示前缀和为0的路径有一条。(不这样做若某个节点的前缀和直接已经等于targetSum,此时反而会错过此路径)
        prefixMap.put(0L,1);

        //传入参数是根节点root,和root之前的前缀和0
        return recur(root,0L);

    }
}
运行结果

在这里插入图片描述

参考文章:

https://leetcode.cn/problems/path-sum-iii/solutions/596361/dui-qian-zhui-he-jie-fa-de-yi-dian-jie-s-dey6/

思路二:减少遍历节点数

代码实现

C++

在这里插入代码片
运行结果
参考文章:

在这里插入图片描述

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

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

相关文章

CANoe-如何在Trace窗口显示SYN和FIN报文、同一条以太网报文在Trace窗口中的多条显示

1、如何在Trace窗口显示SYN和FIN报文 当我们使用CANoe实现TCP通信时,希望在Trace窗口直观显示报文的类型:SYN、ACK、FIN。显然Trace窗口也是支持这样的功能的。但很多时候由于一些人为的不正确的设置和配置,造成无法显示。 如果想解析出SYN报文,首先在Trace窗口选择正确的…

5个高清视频素材网站,免费下载~

免费高清视频素材网站&#xff0c;这几个你一定要知道&#xff0c;建议收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富&#xff0c;网站主要还是以设计类素材为主&#xff0c;高清视频素材也很多&#xff0c;像风景、…

dcdc降压电路原理及仿真

在之前的文章 DCDC 降压芯片基本原理及选型主要参数介绍 中已经大致讲解了dcdc降压电路的工作原理&#xff0c;今天再结合仿真将buck电路工作过程讲一讲。 基本拓扑 上图为buck电路的基本拓扑结构&#xff0c;开关打到1&#xff0c;电感充电&#xff1b;开关打到0&#xff0c;…

pdf怎么转换成jpg格式的图片,5种方法详细教程

pdf怎么转换成jpg格式的图片&#xff0c;为什么这样做呢&#xff1f;那是因为将PDF转换成JPG格式的主要原因是方便在演示文稿、网页或社交媒体等平台上展示和分享PDF文件的内容。JPG格式具有广泛的兼容性和易于传输的特点&#xff0c;而且可以轻松地进行编辑和调整大小。此外&a…

Java反射简单介绍_01

文章目录 1. 什么是反射2. Java中类加载的三个阶段3. 反射机制提供的相关类4. Java中获取Class类的三种方式5. Class类提供的功能5.1. 获取Field类方法5.2. 获取Method类方法5.3. 获取Constructor类方法5.4. Class中其他方法 1. 什么是反射 Java中的反射主要是体现在运行期间,…

uniapp 用css画五边形(app 小程序)

效果图 css .scoreLabel{ background: $yxs-theme-color; width: 64rpx; height: 69rpx; line-height: 32rpx; font-size: 28rpx; font-family: DINPro; f…

点亮未来明灯,引领绿色革命

随着全球气候变化日趋严重&#xff0c;能源转型成为解决气候问题和提高全球能源安全合理性的必要措施之一。可持续能源技术因其对环境的友好性和可再生性而成为了当前热点话题。可持续能源技术已经成为人们日益关注的焦点。这项技术可以帮助我们减少对化石燃料的依赖&#xff0…

如何选择适合自己的小程序开发框架

随着微信、支付宝等开放平台的壮大&#xff0c;移动应用生态市场的蓬勃发展&#xff0c;例如小程序已经成为各个企业和开发者的重要选择。为了提高小程序的开发效率和代码重用性&#xff0c;许多第三方开发框架应运而生。 准备为需要的朋友整理一些常见的小程序第三方开发框架…

能伸展脖子的机器人?东京大学最新研究成果:基于鸵鸟肌肉骨骼结构和行为,具有高度灵活性的新型机械臂—RobOstrich(附论文)

原创 | 文 BFT机器人 得益于高度灵活的颈部&#xff0c;鸟类可以做很多事情&#xff0c;无论是转过头梳理自己的后背&#xff0c;在飞行过程中“眼观六路”&#xff0c;还是在地面或树上难以触及的角落和缝隙寻找食物。而在所有鸟类中&#xff0c;鸵鸟以其结实灵巧的颈部脱颖而…

顶部菜单栏-popuwindows

效果 布局文件 猜想与步骤 1.通过.9.png 制作尖尖效果&#xff0c; 2.popuwindows弹出布局框 以及灰色背景 3.点击按钮进入不同功能

QT运行程序后出现无法打开输出文件问题

:-1: error: cannot open output file release\Dailin.exe: Permission denied collect2.exe:-1: error: error: ld returned 1 exit status 如上所示报错。这个是因为用户写的程序开辟空间后没有释放造成的。用户需要把开辟了空间释放就可以了。 我的例子如下。 My_Uart *Ua…

【聚焦】“饶派杯”XCTF车联网安全挑战赛即将开启!

为深入贯彻落实国家网络强国和交通强国战略部署&#xff0c;推动智能网联汽车技术与产业发展、加快该领域人才培养、提升行业创新&#xff0c;打造自主可控、自主研发的中国智能网联汽车安全生态体系&#xff0c;由江西省委网信办、江西省工信厅、上饶市人民政府主办&#xff0…

【云渲染案例】《长月烬明》特效出圈?国内9家视效公司联手打造国风新仙侠!丨瑞云渲染案例

仙侠剧是中国电视剧的一大特色&#xff0c;也是很多观众喜爱的类型。近年来&#xff0c;仙侠剧的制作水平越来越高&#xff0c;由鞠觉亮执导&#xff0c;罗云熙、白鹿领衔主演的《长月烬明》就是一部在今年四月份引起了轰动的虐恋仙侠剧&#xff0c;它以炫丽的特效、新颖的剧情…

目前流行的9大前端框架

1. React 2. Vue 3. Angular 、 4. Svelte 官网&#xff1a;https://svelte.dev 中文官网&#xff1a;https://www.sveltejs.cn Svelte 是一种全新的构建用户界面的方法。传统框架如 React 和 Vue 在浏览器中需要做大量的工作&#xff0c;而 Svelte 将这些工作放到构建应用程…

WLAN,AP等

无线网络部署方案&#xff1a; AC直连式组网 AC旁挂式组网 WLAN 是无线局域网&#xff08;Vireless Local Area Network&#xff09;的简称 也称之为 Wi-Fi 简单理解&#xff1a;无线就是网线的一个延长 AC&#xff1a;无线控制器--统一管理AP AP&#xff1a;散发无线…

nginx 服务器总结

一. 负载均衡的作用有哪些&#xff1f; 1、转发功能 按照一定的算法【权重、轮询】&#xff0c;将客户端请求转发到不同应用服务器上&#xff0c;减轻单个服务器压力&#xff0c;提高 系统并发量。 2、故障移除 通过心跳检测的方式&#xff0c;判断应用服务器当前是否可以正常…

原神个人服务器替换模型(3Dmigoto)教程

原神个人服务器替换模型(3Dmigoto)教程 本期教程教大家如何修改原神私服角色模型 首先下载3Dmigoto &#xff08;3Dmigoto是开源的自己有兴趣想法的在GIT搜&#xff09; 打开3Dmigoto文件内的d3dx.ini文件 找到target &#xff08;我们需要找到有路径的这个选项&#xff09; …

【Vue基础】Element案例学习-智能学习辅助系统

一、效果展示 初步设计一个系统&#xff0c;有目录、搜索栏、表格操作等。 二、参考代码 主要关注上图“App.vue”和“BtestView.vue”两个文件的代码 1、App.vue <template><div ><!-- <h1>{{ message }}</h1> --><!-- <element-view&…

吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%

性能优化可以说是很多一线大厂对其公司内高级开发的基本要求 &#xff08;其中以Java岗最为显著&#xff09; 。其原因有两个&#xff1a;一是提高系统的性能&#xff0c;二是为公司节省资源。两者都能做到&#xff0c;那你就不可谓不是普通程序员眼中的“调优大神了”。 那么…

【LinuxShell】Shell编程之iptables防火墙

文章目录 一、iptables防火墙1.iptables防火墙概述2.netfilter和iptables 二、iptables的表、链结构1.iptables的四表五链结构介绍2.四表五链的作用3.数据包控制的匹配流程规则链之间的匹配顺序规则链内的匹配顺序 三、iptables用法1.基本语法命令格式常用的控制类型 2.添加、查…