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

【每天学习一点算法 2025/12/11】合并两个有序链表

每天学习一点算法 2025/12/11

题目:合并两个有序链表

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

  1. 递归方法看过我反转链表的应该都知道递归链表的要点。

    因为是升序的链表,所以我们每次只选当前最小的节点,剩下的部分交给递归处理

    • 终止条件:其中一个链表遍历完成

      如果list1为空(遍历完了),说明剩下的部分直接用list2就行

      如果list2为空(遍历完了),说明剩下的部分直接用list1就行

    • 递:每次选择较小的节点,向下递归调用,这样每层递归节点的值都是大于等于上一层的

    • 归:递归触底,开始逐个拼接节点

    functionmergeTwoLists(list1:ListNode|null,list2:ListNode|null):ListNode|null{// 终止条件:其中一个链表遍历完成if(!list1)returnlist2if(!list2)returnlist1// 每次选择较小的节点,将更大的节点和自己的下一节点交给递归处理if(list1.val<list2.val){list1.next=mergeTwoLists(list1.next,list2)// 返回当前递归层选择的节点returnlist1}else{list2.next=mergeTwoLists(list1,list2.next)// 返回当前递归层选择的节点returnlist2}};
  2. 还有一种方法就是遍历链表,迭代出合并的结果。

    functionmergeTwoLists1(list1:ListNode|null,list2:ListNode|null):ListNode|null{// 创建一个节点用于迭代开头constprehead=newListNode(-1);letprev=prehead// 遍历链表直到其中一个链表结束while(list1!=null&&list2!=null){// 比较节点值迭代结果if(list1.val<=list2.val){prev.next=list1 list1=list1.next}else{prev.next=list2 list2=list2.next}prev=prev.next}// 合并剩余的部分prev.next=list1===null?list2:list1// 返回链表头returnprehead.next}

题目来源:力扣(LeetCode)

http://www.zskr.cn/news/83900.html

相关文章:

  • 2025 最新货代 / 货运代理服务商 TOP5 评测!深度覆盖欧美加专线,全链路方案 + 全球网络权威榜单发布,赋能跨境电商与传统外贸高效出海 - 全局中转站
  • 2025 最新货代方案服务商 / 厂家 TOP5 评测!深度覆盖欧美加专线,全链路协同 + 跨境直达权威榜单发布,赋能电商全球化布局新生态 - 全局中转站
  • 基于Java Spring Boot的相机租赁系统的设计与实现-毕业设计源码50424
  • Python学习日记:探索列表的奥秘与编程乐趣
  • Windows上解决test.c LINK : fatal error LNK1181: 无法打开输入文件“aio.lib” 无法打开输入文件“cufile.lib”
  • 第十一章篇 实现拦截器
  • Docker Buildx构建缓慢?你必须知道的7个Agent镜像优化实践
  • 8 个自考论文降重工具,AI 免费网站推荐
  • 新手鱼竿推荐:新手买钓鱼竿怎么选?2025年鱼竿新手入门推荐 - 品牌2026
  • 卡内基跨学科团队利用随机森林模型,基于406份样本成功捕捉33亿年前生命遗迹
  • 【STM32】低功耗
  • 区间DP第2课:区间DP应用案例实践1
  • 基于 ESP32 的对话机器人实现:整合 Coze 大模型、百度千帆 ASR 与 TTS
  • MySQL 主从同步与读写分离详解
  • OpenHarmony Flutter 分布式安全与隐私保护:跨设备可信交互与数据防泄漏方案
  • http协议中各个网段含义
  • MagicTime: Time-Lapse Video Generation Models asMetamorphic Simulators论文精读(1)
  • MediaPipe Hands实战指南:从算法原理到工程部署的深度解密
  • Python列表类型详解
  • Windows系统文件netshell.dll缺失损坏问题 下载修复
  • [Windows] 谷歌浏览器 v142.0.7444.135老毛子优化版
  • 详细介绍:Docker 多服务镜像构建完整教程
  • 2025国产鱼竿十大名牌榜单 从第一名到第十名实力排行 - 品牌2026
  • JVM内存、GC与JConsole实战全解析:从理论到可视化的完整指南
  • PPT每一页都要加小标题?拒绝复制粘贴,这3招让你效率翻倍!
  • [Android] B站第三方电视TVapp BV_0.3.10
  • 98465
  • 为什么比话能把论文的ai率降低下来?比话的技术优势分析拆解!
  • AI如何帮你快速搭建MVC框架项目?
  • 【程序员必备技能】:VSCode + Quantum SDK 环境搭建全解析