news 2026/4/18 8:13:39

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【每天学习一点算法 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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 6:21:19

Q#测试效率提升10倍的秘密(仅限VSCode用户)

第一章&#xff1a;Q# 程序的 VSCode 单元测试概述 在量子计算开发中&#xff0c;确保 Q# 程序的正确性至关重要。Visual Studio Code&#xff08;VSCode&#xff09;结合 .NET SDK 提供了对 Q# 项目进行单元测试的完整支持&#xff0c;使开发者能够在本地快速验证量子操作的行…

作者头像 李华
网站建设 2026/4/15 11:48:29

如何为你的Python项目构建pyproject.toml文件

参考链接&#xff1a;https://packaging.python.org/en/latest/guides/writing-pyproject-toml/https://packaging.python.org/en/latest/guides/writing-pyproject-toml/基本上现在大部分github的python开发项目&#xff0c;都有pyproject.toml配置&#xff0c;所以这篇官网pa…

作者头像 李华
网站建设 2026/4/16 17:22:02

卡内基跨学科团队利用随机森林模型,基于406份样本成功捕捉33亿年前生命遗迹

解码深埋于地表之下的古老岩层里的有机分子&#xff0c;对于掌握地球历史与研究生命演进具有至关重要的作用。这些生命活动的潜在见证者不仅能够破解地球生命诞生的谜题&#xff0c;尤其是厘清光合作用的起源和地球大气氧化进程的关联&#xff0c;还能填补生命演进时间线的空白…

作者头像 李华
网站建设 2026/4/16 7:53:48

用JAVA开启摄影约拍新体验:线上预约,便捷触手可及

用JAVA开启摄影约拍新体验&#xff1a;线上预约&#xff0c;便捷触手可及在快节奏的现代生活中&#xff0c;人们愈发渴望用摄影记录美好瞬间&#xff0c;却常因找不到合适摄影师或预约流程繁琐而烦恼。利用JAVA搭建的摄影约拍平台&#xff0c;凭借其强大的技术优势&#xff0c;…

作者头像 李华
网站建设 2026/4/16 12:51:13

基于SpringBoot的学生评奖评优管理系统-计算机毕业设计源码+LW文档分享

摘 要 当下教育管理领域正经历一场从传统人工操作到智能化转变的深刻变革&#xff0c;这种技术革新提升了教育机构的运营效益&#xff0c;借助构建标准化、制度化以及程序化的智能评奖评优管理体系&#xff0c;解决了传统管理模式里的随意性问题&#xff0c;提高了管理流程的规…

作者头像 李华
网站建设 2026/4/15 21:05:13

基于SpringBoot的牙科诊所管理系统-计算机毕业设计源码+LW文档分享

摘要 随着网络科技的日新月异与人们经济条件的持续提升&#xff0c;网络技术已深深植根于我们的日常生活&#xff0c;成为不可或缺的关键要素。信息管理系统&#xff0c;这一依托于先进计算机技术的创新工具&#xff0c;根据用户的多样化需求进行精心开发与设计&#xff0c;已在…

作者头像 李华