当前位置: 首页 > news >正文

复习Day07:链表part03:21. 合并两个有序链表、2. 两数相加

之前的blog链接:https://blog.csdn.net/weixin_43303286/article/details/131700482?spm=1001.2014.3001.5501

我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用CLion了,使用leetcode自带模拟面试环境。

链表章节的题目都体现出思想简单,但很难一次写对的特点,注意循环后条件什么时候是空指针,防止越界访问。

  1. 合并两个有序链表

image

这道题的整体思路就是使用两个指针,分别遍历l1和l2,取最小的那个作为结果链表p的next:

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode* p1 = list1;ListNode* p2 = list2;ListNode* dummy = new ListNode(0), *p = dummy;while(p1 != nullptr && p2 != nullptr){if(p1->val > p2->val){//插入p2到res中p->next = p2;p2 = p2->next;}else{p->next = p1;p1 = p1->next;}p = p->next;}if (p1 != NULL) {p->next = p1;}if (p2 != NULL) {p->next = p2;}return dummy->next;}
};

注意循环条件,一旦跳出循环,肯定说明p1或p2有一个结束了,那么就怕剩下的那个直接接上去,使用虚拟头节点简化运算。

(什么时候需要用虚拟头结点?我这里总结下:当你需要创造一条新链表的时候,可以使用虚拟头结点简化边界情况的处理。)

2 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,
并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

image

这个的意思就是说将一个数字逐位存在了链表中,其中前面存的是低位,后面存的是高位。这样对于遍历顺序来说是符合我们的加法习惯的,如果相反还难搞些。

最终代码:

// 注意:cpp 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
// 本代码已经通过力扣的测试用例,应该可直接成功提交。class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {// 在两条链表上的指针ListNode *p1 = l1, *p2 = l2;// 虚拟头结点(构建新链表时的常用技巧)ListNode *dummy = new ListNode(-1);// 指针 p 负责构建新链表ListNode *p = dummy;// 记录进位int carry = 0;// 开始执行加法,两条链表走完且没有进位时才能结束循环while (p1 != nullptr || p2 != nullptr || carry > 0) {// 先加上上次的进位int val = carry;if (p1 != nullptr) {val += p1->val;p1 = p1->next;}if (p2 != nullptr) {val += p2->val;p2 = p2->next;}// 处理进位情况carry = val / 10;val = val % 10;// 构建新节点p->next = new ListNode(val);p = p->next;}// 返回结果链表的头结点(去除虚拟头结点)return dummy->next;}
};

相关文章:

复习Day07:链表part03:21. 合并两个有序链表、2. 两数相加

之前的blog链接:https://blog.csdn.net/weixin_43303286/article/details/131700482?spm1001.2014.3001.5501 我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Lab…...

Ubuntu中启动HDFS后没有NameNode解决办法

关闭进程: stop-dfs.sh 格式化: hadoop namenode -format 出现报错信息: 23/10/03 22:27:04 WARN fs.FileUtil: Failed to delete file or dir [/usr/data/hadoop/tmp/dfs/name/current/fsimage_0000000000000000000.md5]: it still exi…...

AWS-Lambda之导入自定义包-pip包

参考文档: https://repost.aws/zh-Hans/knowledge-center/lambda-import-module-error-python https://blog.csdn.net/fxtxz2/article/details/112035627 简单来说,以 " alibabacloud_dyvmsapi20170525 " 包为例 ## 创建临时目录 mkdir /tmp cd ./tmp …...

MAC 如何解决GitHub下载速度慢的问题

说在前面 解决github下载速度慢的方法很多,本文主要介绍通过Git镜像的方式解决下载慢的问题。 主要步骤有:1、找到gitconfig文件, 2、通过git命令查看当前生效的config 配置 3、使用git config命令编辑并添加国内镜像源 1、gitconfig 文件在…...

Redis与分布式-哨兵模式

接上文 Redis与分布式-主从复制 1.哨兵模式 启动一个哨兵,只需要修改配置文件即可, sentinel monitor lbwnb 1247.0.0.1 6001 1先将所有服务关闭,然后修改配置文件,redis Master,redis Slave,redis Slave…...

创建型设计模式 原型模式 建造者模式 创建者模式对比

创建型设计模式 单例 工厂模式 看这一篇就够了_软工菜鸡的博客-CSDN博客 4.3 原型模式 4.3.1 概述 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 4.3.2 结构 原型模式包含如下角色: 抽象原型类:规定了…...

HTML详细基础(二)文件路径

目录 一.相对路径 二.绝对路径 三.超链接标签 四.锚点链接 首先,扩展一些HTML执行的原理: htmL(hypertext markup Language) 是一种规范(或者说是一种标准),它通过标记符(tag)来标记要显示…...

大数据-玩转数据-Flink 海量数据实时去重

一、海量数据实时去重说明 借助redis的Set,需要频繁连接Redis,如果数据量过大, 对redis的内存也是一种压力;使用Flink的MapState,如果数据量过大, 状态后端最好选择 RocksDBStateBackend; 使用布隆过滤器,…...

1.在vsCode上创建Hello,World

(1).编译器的安装配置 使用vsCode进行编写c语言,首先需要安装gcc编译器,可以自己去寻找资料或者gcc官网进行下载. 下载好后,将文件夹放入到自己指定的目录后,配置系统环境变量,将path指向编译器的bin目录 进入bin目录打开cmd,输入gcc -v,然后就会成功输出信息. (2).vsCode配…...

XrayGLM - 医学大模型

文章目录 关于 XrayGLM研究背景VisualGLM-6B 关于 XrayGLM XrayGLM: 首个会看胸部X光片的中文多模态医学大模型 | The first Chinese Medical Multimodal Model that Chest Radiographs Summarization. 基于VisualGLM-6B 微调 github : https://github.com/WangRongsheng/Xra…...

Hive 常见数据倾斜场景及解决方案(Map\Join\Reduce端)

目录 MapReduce流程简述a) Map倾斜b) Join倾斜c) Reduce倾斜 首先回顾一下MapReduce的流程 MapReduce流程简述 输入分片: MapReduce 作业开始时,输入数据被分割成多个分片,每个分片大小一般在 16MB 到 128MB 之间。这些分片会被分配给不同的…...

C++中的四种强制类型转换符详解

前 言 C 既支持 C 风格的类型转换,又有自己风格的类型转换。C 风格的转换格式很简单,但是有不少缺点: 转换太过随意,可以在任意类型之间转换。你可以把一个指向 const 对象的指针转换成指向非 const 对象的指针,把一…...

Windows电脑多开器的优缺点对比

Windows电脑多开器是一种能够让用户同时运行多个应用程序、游戏或者网页的软件工具。它的作用在于让用户能够更加高效地工作、学习或者娱乐。但是,这种软件也存在一些优劣势的对比。 优点: 提升工作效率。多开器可以让用户同时打开多个应用程序或者网页…...

Java笔记六(面向对象:类与对象)

面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据 抽象 三大特征:封装 继承 多态 从认识角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽…...

Git使用【中】

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析3 目录 👉🏻分支管理分支概念git branch(查看/删除分…...

Greenplum7一键安装

2023年9月底,Greenplum 发布了7.0.0版本,并于2023年10月03日开放了安装部署说明文档,现在快速尝鲜版的docker一键部署方式如下: mkdir /data/gpdb docker run -d --name greenplum -p 15432:5432 -v /data/gpdb:/data inrgihc/g…...

Springboo整合Sentinel

Springboo整合Sentinel 1.启动Sentinel java -jar sentinel-dashboard-1.8.6.jar2.访问localhost:8080到Sentinel管理界面(默认账号和密码都是sentinel) 3.引入依赖(注意版本对应) <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spr…...

python爬取csdn个人首页中的所有封面

#爬取csdn个人首页中的所有封面 import requests import json import reurlhttps://blog.csdn.net/community/home-api/v1/get-business-list? headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safar…...

EasyHttp - 网络请求,如斯优雅

官网 项目地址&#xff1a;Github博客地址&#xff1a;网络请求&#xff0c;如斯优雅 OkHttp 另外对 OkHttp 原理感兴趣的同学推荐你看以下源码分析文章 OkHttp 精讲&#xff1a;拦截器执行原理OkHttp 精讲&#xff1a;RetryAndFollowUpInterceptorOkHttp 精讲&#xff1a;…...

【Java】Stream的基本使用

Stream特点 Stream的一系列操作组成了Stream的流水线, Stream流水线包含: 数据源: 这里的数据源可能是集合/数组, 可能是生成器, 甚至可能是IO通道(Files.lines)零个或多个中间操作: 中间操作会导致流之间的转化, 如filter(Predicate)一个终端操作: 终端操作会产生最终所需要的…...

半导体产业3000亿美元背后的冷思考:成本高墙、利润悖论与创新挑战

1. 行业现状&#xff1a;跨越3000亿美元门槛后的冷思考 又到了一年一度回顾过去、展望未来的时刻。对于我们这些在半导体行业摸爬滚打了十几年甚至几十年的老工程师来说&#xff0c;每年的这个时候心情总是复杂的。今年有个标志性的消息&#xff1a;全球半导体产业营收终于再次…...

3分钟掌握跨平台鼠标连点器:免费开源自动化工具快速上手指南

3分钟掌握跨平台鼠标连点器&#xff1a;免费开源自动化工具快速上手指南 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#…...

CANopen通信避坑指南:你的SDO为什么读不到映射变量?从对象字典EDS文件说起

CANopen通信避坑指南&#xff1a;你的SDO为什么读不到映射变量&#xff1f;从对象字典EDS文件说起 调试CANopen通信时&#xff0c;最令人抓狂的瞬间莫过于&#xff1a;从站程序明明能正常读写变量&#xff0c;主站却死活读不到映射值。上周我就遇到一个典型案例——某工业设备厂…...

管理幅度怎样设置才合理?

https://mp.weixin.qq.com/s/aoUgKUmsOUyC7wWOONMIIw...

告别手动建造:TEdit免费地图编辑器如何10倍提升泰拉瑞亚创作效率

告别手动建造&#xff1a;TEdit免费地图编辑器如何10倍提升泰拉瑞亚创作效率 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also l…...

RK3368安卓9.0升级后卡Recovery?手把手教你分析串口日志定位NAND/EMMC分区问题

RK3368安卓9.0升级卡Recovery&#xff1f;串口日志深度分析与NAND/EMMC分区修复实战 当RK3368平台设备在升级Android 9.0固件后卡在Recovery界面时&#xff0c;这往往意味着底层存储设备的分区加载机制出现了问题。作为一名嵌入式开发者&#xff0c;能够从串口日志中抽丝剥茧定…...

别再死记硬背了!用GNS3/EVE-NG模拟BGP、OSPF、RIP混合组网,带你理解路由选路优先级

动态路由协议实战&#xff1a;用GNS3/EVE-NG解密BGP、OSPF、RIP选路逻辑 当你面对一个同时运行BGP、OSPF和RIP的复杂网络时&#xff0c;路由器究竟如何选择最佳路径&#xff1f;这个看似基础的问题&#xff0c;却让无数网络工程师在深夜排障时抓狂。传统教材中那些枯燥的AD值表…...

XXMI启动器终极指南:一站式游戏模组管理平台完整教程

XXMI启动器终极指南&#xff1a;一站式游戏模组管理平台完整教程 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 还在为多个游戏模组管理而烦恼吗&#xff1f;XXMI启动器作为一款…...

轻量级容器编排工具Herdctl:填补Docker Compose与K8s之间的空白

1. 项目概述&#xff1a;从容器到集群的轻量级管理工具如果你和我一样&#xff0c;长期在容器化和微服务架构的领域里摸爬滚打&#xff0c;那你一定对docker和docker-compose这两个名字再熟悉不过了。它们几乎是单体容器和多容器应用编排的“标准答案”。然而&#xff0c;当我们…...

FanControl终极指南:Windows电脑风扇智能控制软件完全解析

FanControl终极指南&#xff1a;Windows电脑风扇智能控制软件完全解析 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...