【算法】链表:21.合并两个有序链表(easy)

 系列专栏

《分治》

《模拟》

《Linux》


目录

1、题目链接

2、题目介绍

3、解法(双指针)

4、代码 


1、题目链接

21. 合并两个有序链表 - 力扣(LeetCode)

2、题目介绍

3、解法(双指针)

推荐一篇题解题解 - 力扣(LeetCode)

  1. 解决方法
    • 使用一个伪头节点来简化边界条件的处理,特别是在插入第一个节点时。这避免了处理空链表或只有一个元素的特殊情况。
    • 使用一个指针 tmp 来遍历新链表,并始终保持它指向新链表的最后一个节点,以便于进行尾插操作。
    • 遍历两个给定的链表 list1 和 list2,比较当前节点的值,将较小的节点插入到新链表中,并移动相应链表的指针到下一个节点。
    • 当其中一个链表遍历完毕后,将另一个链表剩余的节点直接连接到新链表的末尾。
  2. 代码实现
    • 初始化伪头节点 head 和临时指针 tmp
    • 使用 while 循环遍历两个链表,直到其中一个链表为空。
      • 在循环内部,比较 list1 和 list2 当前节点的值。
      • 将值较小的节点插入到新链表中(即设置 tmp->next),并移动对应链表的指针。
      • 移动 tmp 指针到新链表的最后一个节点。
    • 使用两个额外的 while 循环来处理剩余的链表(如果有的话)。由于已经遍历过两个链表的一部分或全部,这两个循环中至多有一个会执行。
      • 这两个循环的目的是将剩余链表的所有节点连接到新链表的末尾。
    • 返回新链表的头节点(即 head->next,因为 head 是一个伪头节点)。细节很重要!!!

4、代码 

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode* head = new ListNode(0);//初始化伪头节点,便于遍历和返回ListNode* tmp = head;//在新链表中,指向最后一个结点,便于实现尾插while (list1 != nullptr && list2 != nullptr){if (list1->val < list2->val){tmp->next = list1;list1 = list1->next;}else {tmp->next = list2;list2 = list2->next;}tmp = tmp->next;}//tmp->next = list1 != nullptr ? list1 : list2;while (list1 != NULL){tmp->next = list1;list1 = list1->next;tmp = tmp->next;}while (list2 != NULL){tmp->next = list2;list2 = list2->next;tmp = tmp->next;}return head->next;//返回真正的头节点}};

 


💗感谢阅读!💗

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

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

相关文章

计算机毕业设计Python+Spark知识图谱高考分数线预测 高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计

《PythonSpark知识图谱高考分数线预测与志愿推荐系统》开题报告 一、课题背景及意义 1. 背景 随着我国高考制度的不断完善以及大数据技术的快速发展&#xff0c;高考志愿推荐系统的需求日益增长。高考作为中国教育体系中的重要环节&#xff0c;其志愿填报直接关系到考生的未…

双指针--收尾的两道题

双指针 (封面起到吸引读者作用&#xff0c;和文章内容无关哈&#xff0c;但是文章也是用心写的&#xff09; 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums…

Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习使用传感器测温。 1.LM35介绍 一般来讲当知道需求&#xff0c;就可以 通过既定要求的条件来筛选需要的器件&#xff0c;多方面的因素最终选定了器件…

鸿蒙开发需要学什么语言

随着物联网(IoT)技术的发展&#xff0c;操作系统作为连接人与智能设备的关键桥梁变得尤为重要。鸿蒙系统(HarmonyOS)&#xff0c;作为华为推出的一款面向全场景的分布式操作系统&#xff0c;不仅在国内引起了广泛关注&#xff0c;在国际上也逐渐崭露头角。对于开发者而言&#…

全新升级的GUI: Depthai Viewer 使用指南发布

DepthAIViewer是一个 GUI 应用程序&#xff0c;可让您通过实时输出可视化图像来使用相机。 DepthAIViewer 是 DepthAI 和 OAK 相机的可视化工具。它在默认情况下将运行一个演示应用程序&#xff0c;该应用程序将可视化所有steam在设备上运行推理。它还允许您更改设备的配置。当…

CTMO时代下的营销新力量:2+1链动模式AI智能名片商城小程序

在当今这个瞬息万变的商业世界里&#xff0c;营销领域正经历着一场深刻的变革。传统的CMO岗位似乎在时代的浪潮中逐渐失去了它的光芒&#xff0c;CTMO正在悄然取代传统CMO的岗位。 随着营销丛林现象的出现&#xff0c;企业面临着前所未有的挑战。许多企业发现&#xff0c;那些传…

自动驾驶系列—深度剖析自动驾驶芯片SoC架构:选型指南与应用实战

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

Vue+NestJS项目实操(图书管理后台)

一、项目搭建 前端基于vben进行二次开发 在Github下载vben框架&#xff0c;搜索vben即可 下载地址&#xff1a;https://github.com/vbenjs/vue-vben-admin 下载完成后&#xff0c;进行安装依赖&#xff0c;使用命令&#xff1a; // 下载依赖 pnpm install// 运行项目 pnpm …

数据分析-30-电影死亡笔记中的数据分析思维

文章目录 1 死亡笔记简介2 推理过程中的数据分析2.1 第一个问题2.2 第二个问题2.3 第三个问题3 数据分析的发展4 参考附录1 死亡笔记简介 《死亡笔记》改编自小畑健同名日本人气漫画《Death note》,故事描述拥有一本写上姓名就能将人置于死地笔记本的高中生夜神月与天才警部搜…

构建企业数字化转型的战略基石——TOGAF框架的深度解析

数字化时代的企业变革需求 在全球范围内&#xff0c;数字化转型已成为企业提高竞争力、优化运营流程、提升客户体验的核心战略。数字技术的迅猛发展&#xff0c;不仅改变了传统行业的运作模式&#xff0c;也迫使企业重新思考其业务架构和技术基础设施。TOGAF&#xff08;The O…

8.数据结构与算法-双向链表

双向链表的结构定义 从第二个指针找到下一个元素 从第一个指针找到上一个元素 双向循环列表 从第二个指针找到下一个元素&#xff0c;第二个指针可以往前循环找到链表开头 从第一个指针找到上一个元素&#xff0c;第一个指针可以往前循环昭侯链表结尾 双向链表的插入 双向链…

自闭症孩子快乐成长之路:选择寄宿学校的理由

在探索自闭症孩子快乐成长之路的过程中&#xff0c;许多家长面临着一系列的选择与挑战。如何为孩子找到一个既能提供专业教育&#xff0c;又能保障他们身心健康的成长环境&#xff0c;成为了家长们共同关注的焦点。广州的星贝育园自闭症儿童寄宿制学校&#xff0c;正是这样一所…

Linux 万字入门教程

0. 前言 文章已经收录到 GitHub 个人博客项目&#xff0c;欢迎 Star&#xff1a; https://github.com/chenyl8848/chenyl8848.github.io或者访问网站&#xff0c;进行在线浏览&#xff1a; https://chenyl8848.github.io/1. Linux 介绍 1.1 引言 Linux 是一套免费使用和自由…

利用Spring Boot构建足球青训管理平台

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时&#xff0c;它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译&#xff0c;任何地方执行的优点&#xff0c;使得盛行的web应用程序有大量的Java编译&#xff0c;很好地支…

无人机科普研学基地建设技术详解

无人机科普研学基地的建设技术详解涉及多个方面&#xff0c;包括基地建设规划、主要功能区划分、配套设备与系统、课程设计与实施等。以下是对这些方面的详细阐述&#xff1a; 一、基地建设规划 1. 目标定位&#xff1a;无人机科普研学基地旨在通过实践和学习活动&#xff0c;…

CountDownlatch、CyclicBarrier、Semaphore使用介绍

一、CountDownlatch(多线程通信计数器实现多个线程的协同工作) import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class CountDownLatchTest {public static void main(String[] arg…

隐马尔可夫模型在股市预测中的应用

隐马尔可夫模型在股市预测中的应用 原创 QuantML QuantML 2024年09月29日 21:44 Content 摘要 股市因其复杂多变的特性&#xff0c;预测未来股价一直是一个挑战。然而&#xff0c;运用高级方法可以显著提高股价预测的准确性。隐马尔可夫模型&#xff08;Hidden Markov Mode…

常用的Java安全框架

Spring Security&#xff1a; 就像Java安全领域的“瑞士军刀”&#xff0c;功能全面且强大。 支持认证、授权、加密、会话管理等安全功能。 与Spring框架无缝集成&#xff0c;使用起来特别方便。 社区活跃&#xff0c;文档丰富&#xff0c;遇到问题容易找到解决方案。 Apach…

python中的find函数怎么用

Python find() 方法检测字符串中是否包含子字符串 str &#xff0c;如果指定 beg&#xff08;开始&#xff09; 和 end&#xff08;结束&#xff09; 范围&#xff0c;则检查是否包含在指定范围内&#xff0c;如果包含子字符串返回开始的索引值&#xff0c;否则返回-1。 语法 …

嵌入式 DAC基础知识

DAC 基本原理 DAC&#xff08;Digital-to-Analog Canverter&#xff09;&#xff0c;指数字/模拟转换器。可将数字量转换为成比例的模拟电压或电流。举个例子&#xff0c;计算机可能产生范围从 00000000 到 11111111 的数字输出&#xff0c;DAC 将其转换为范围从 0 到 10V 的电…