【力扣 21】合并两个有序链表 C++题解(链表+双指针)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列


思路

首先,初始化两个指针p1和p2分别指向两个链表的头部。然后进入一个循环,只要两个链表都还有剩余元素,就比较p1和p2指向的当前元素的大小。如果p1指向的元素小于p2指向的元素,就将p1指向的元素插入新链表,并将p1向后移动一位。反之,就将p2指向的元素插入新链表,并将p2向后移动一位。

当其中一个链表的所有元素都已经插入新链表后,循环结束。这时,另一个链表可能还有剩余元素。因此,还需要两个额外的循环,分别将p1和p2指向的链表的剩余元素全部插入新链表。

插入元素的操作是通过一个名为"insert"的辅助函数实现的。如果新链表为空,就将新元素作为新链表的头部。否则,就将新元素插入新链表的尾部,然后将尾部指针向后移动一位。

最后,函数返回新链表的头部指针,即完成了两个有序链表的合并。


AC代码

/** @lc app=leetcode.cn id=21 lang=cpp** [21] 合并两个有序链表*/// @lc code=start
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {ListNode* list3 = nullptr;ListNode* p3 = nullptr;public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode* p1 = list1;ListNode* p2 = list2;while (p1 != nullptr && p2 != nullptr) {if (p1->val < p2->val) {insert(p1->val);p1 = p1->next;} else {insert(p2->val);p2 = p2->next;}}while (p1 != nullptr) {insert(p1->val);p1 = p1->next;}while (p2 != nullptr) {insert(p2->val);p2 = p2->next;}return list3;}void insert(int t) {if (list3 == nullptr) {list3 = new ListNode(t);p3 = list3;} else {p3->next = new ListNode(t);p3 = p3->next;}}
};
// @lc code=end

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

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

相关文章

小程序发劵插件sendCoupon的使用

发劵插件官方文档 我目前的需求是&#xff0c;商家自定义满减劵、优惠劵&#xff0c;点击添加按钮可以添加到自己的卡包。 一开始后台了我发劵插件send-coupon文档&#xff0c;我想要用插件&#xff0c;又占空间&#xff0c;感觉又麻烦&#xff0c;不是有个wx.addCard嘛。非常…

求连续值遍历步数 OD(C++)

将从1开始的连续整数随机打乱,存放到数组 numbers中,请计算从1开始递增访问完所有元素,总共需要移动的步数。 输入 2<= numbers,length <= 100, 1 <= numbers[i]<= numbers.length 输出 一个整数,表示需要移动的步数 样例1 输入:[4,3,6,1,5,2] 输出…

HCIA-HarmonyOS设备开发认证-1.HarmonyOS简介

目录 前言目标一、HarmonyOS简介1.1、初识HarmonyOS1.2、HarmonyOS典型应用场景 二、HarmonyOS架构与安全2.1、HarmonyOS架构2.1.1 内核层2.1.2 系统服务层2.1.3 框架层2.1.4 应用层 2.2、HarmonyOS安全 3、HarmonyOS关键特性4、HarmonyOS生态5、思考题坚持就有收获 前言 本章…

Qt基础-窗体状态栏右下角的三角框如何去掉

Qt窗体状态栏右下角默认是有的三角框&#xff0c;在项目设计时不需要&#xff0c;如何去掉呢&#xff1f; 默认的窗体界面如下 选中状态栏&#xff0c;修改属性SizeGripEnabled勾选去掉 再次运行&#xff0c;三角框去掉了

【前端】为什么我的定时器在后台运行误差严重 - 浏览器限制后台页面定时器运行速度

【前端】为什么我的定时器在后台运行误差严重 - 浏览器限制后台页面定时器运行速度 为什么我的定时器在后台运行误差严重&#xff1f; 定时器&#xff08;如 setTimeout 和 setInterval&#xff09;是前端开发中常用的工具&#xff0c;它们允许我们在设定的时间后执行代码。但…

java steam 的使用

说steam 前看下kotlin的一个写法如果用java怎么写 fun main() {// 创建一个列表val fruits listOf("Apple", "Banana", "Cherry", "Date", "Elderberry")// 使用 Sequence 进行过滤和映射操作val uppercaseFruitLengths …

怎么用图片生成二维码?扫描二维码看图片怎么制作?

现在将多张图片放到二维码中&#xff0c;通过扫码的方式预览是现在很常见的一种方式&#xff0c;那么如何生成图片、照片的二维码呢&#xff1f;对于图片二维码制作感兴趣的小伙伴&#xff0c;可以跟着小编来学习下面的制作技巧&#xff0c;借助网上的二维码生成器工具的功能&a…

基于LLaMA Factory,单卡3小时训练专属大模型 Agent

大家好&#xff0c;今天给大家带来一篇 Agent 微调实战文章 Agent&#xff08;智能体&#xff09;是当今 LLM&#xff08;大模型&#xff09;应用的热门话题 [1]&#xff0c;通过任务分解&#xff08;task planning&#xff09;、工具调用&#xff08;tool using&#xff09;和…

还在纠结怎么选随身WiFi的,看看这个!随身WiFi靠谱榜第一名推荐!哪个随身WiFi最好用

你是不是还在头疼如何挑选一个靠谱好用的随身WiFi呢&#xff1f;市场上的随身WiFi产品五花八门&#xff0c;每次购买随身WiFi都会被坑&#xff0c;差点就失去购买的信心了~别灰心&#xff0c;一篇文章教你如何挑选一个靠谱好用的随身WiFi&#xff01; 一、5大购买原则&#xff…

Imagenet-A,Imagenet-C和ImageNet-O

Imagenet-A ImageNet-A 数据集包含由 ResNet 模型错误分类的真实世界、未经修改和自然发生的示例。该数据集包含 7,500 张经过对抗性过滤的图像&#xff0c;很容易导致机器学习模型的性能显著下降。 Imagenet-C 对ImageNet 1K添加了一些常见的图像损坏&#xff08;如模糊和噪…

【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、sqlite3介绍二、文件下载三、文件分析四、pro文件五、编译实践一、sqlite3介绍 SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式…

蓝桥杯备战——1.点亮LED灯

1.解析原理图 由上图可以看到8个共阳LED灯接到了573输出口&#xff0c;而573输入接到单片机P0口上。当573 LE脚输入高电平时&#xff0c;输出随输入变化&#xff0c;当LE为低电平时&#xff0c;输出锁存。 由上图可以看到Y4C接到了或非门74HC02的输出端&#xff0c;而输入端为…

API设计模式:REST、GraphQL、gRPC与tRPC全面解析

一、引言 在现代Web和微服务架构中&#xff0c;API&#xff08;应用程序编程接口&#xff09;的设计和实现方式至关重要。本文将探讨四种流行的API设计模式&#xff1a;REST&#xff08;Representational State Transfer&#xff09;、GraphQL、gRPC以及新兴的tRPC。每种模式都…

HCIA——27E-mall、MIME;POP3、IMAP的选择,解答

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

DAY22xss2

远程调用xss平台网站需要在意是http还是https协议 cookie的利用 1.抓包利用 2.特定浏览器活软件 这个浏览器的使用教程 点进去之后再点击这个 然后我们开始 利用cookie cookie有几个值我们就添加几个 3.浏览器插件 遇到的突发情况 例如空白 404 这个时候我们要有种思…

开源元数据管理平台Amundsen安装

Amundsen 是一个用于数据发现和元数据管理的开源平台。Amundsen是一个用于提高数据分析师、数据科学家和工程师在与数据交互时的生产力的数据发现和元数据引擎。目前,它通过索引数据资源(表、仪表板、流等)并基于使用模式(例如,高频查询的表会比低频查询的表更早显示)提供…

sql server 查询所有表的记录条数

DECLARE tableName NVARCHAR(MAX) DECLARE sql NVARCHAR(MAX) CREATE TABLE #TempTable (TableName SYSNAME, RowCounts BIGINT) -- 遍历所有用户表 DECLARE TableCursor CURSOR FOR SELECT t.NAME FROM sys.tables t WHERE t.is_ms_shipped 0 -- 过滤掉系统表 AND t.name…

考研机试 阶乘的和

考研机试 阶乘的和 给定一个非负整数 n&#xff0c;请你判断是否存在一些整数 xi&#xff0c;能够使得 n∑1≤i≤txi!&#xff0c;其中 t≥1,xi≥0,xixj iff ij。iff表示当且仅当。 输入格式 输入包含多组测试数据。 每组数据占一行&#xff0c;包含一个非负整数 n。 最后一行…

SpringBoot,TDengine时序数据库,实现物联网,车联网大批量数据更新最佳实践。

简介 TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台&#xff0c;它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发&#xff0c;对业务运行状态进行实时监测、预警&#xff0c;提供实时的商业洞察。其…

【影像组学入门百问】#73--#77

#73-PyRadiomics可以提取哪些类别的影像组学特征&#xff1f; 1,第一阶统计特征&#xff08;First-order statistics&#xff09;&#xff1a;这些特征反映了图像的基本属性&#xff0c;主要通过对感兴趣区域&#xff08;ROI&#xff09;内的像素强度值进行统计分析而获得。包…