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

合并两个排序的链表

合并两个排序的链表是一个经典的算法问题。

问题描述

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

思路分析

我们可以使用迭代的方法来解决这个问题:

  1. 创建哑节点:创建一个哑节点(dummy node)作为新链表的起始点,这样可以简化边界情况的处理
  2. 双指针遍历:使用两个指针分别遍历两个链表
  3. 比较并连接:比较两个指针当前节点的值,将较小的节点连接到新链表中
  4. 处理剩余节点:当其中一个链表遍历完后,将另一个链表的剩余部分直接连接到新链表的末尾

代码实现

链表节点定义

class ListNode {int val;ListNode next;ListNode(int val) {this.val = val;}
}

方法一:迭代法

public class MergeSortedLists {/*** 迭代法合并两个有序链表* 时间复杂度:O(m+n),空间复杂度:O(1)*/public ListNode mergeTwoLists(ListNode list1, ListNode list2) {// 创建哑节点,简化边界处理ListNode dummy = new ListNode(-1);ListNode current = dummy;// 同时遍历两个链表while (list1 != null && list2 != null) {if (list1.val <= list2.val) {current.next = list1;list1 = list1.next;} else {current.next = list2;list2 = list2.next;}current = current.next;}// 连接剩余部分current.next = (list1 != null) ? list1 : list2;return dummy.next;}
}

方法二:递归法

public class MergeSortedLists {/*** 递归法合并两个有序链表* 时间复杂度:O(m+n),空间复杂度:O(m+n) - 递归栈空间*/public ListNode mergeTwoListsRecursive(ListNode list1, ListNode list2) {// 基准情况if (list1 == null) {return list2;}if (list2 == null) {return list1;}// 递归情况if (list1.val <= list2.val) {list1.next = mergeTwoListsRecursive(list1.next, list2);return list1;} else {list2.next = mergeTwoListsRecursive(list1, list2.next);return list2;}}
}
http://www.dtcms.com/a/545908.html

相关文章:

  • 网站维护和建设工作范围昆明网站建设电话
  • 手机网站开发学习视频给wordpress权限
  • 广州五屏网站建设wordpress 上传到域名
  • 如何在uni-app中禁用iOS橡皮筋效果?
  • 安徽合肥做网站的公司免费企业网站程序
  • LangChain4j学习9:结构化输出
  • 公司介绍网站源码百度aipage智能建站系统
  • PyTorch快速搭建CV模型实战
  • 索引的数据结构
  • 仓颉语言中的协程调度机制深度解析
  • 对网站设计的建议长沙工商注册网上核名
  • 大连企业制作网站上海专业的网络推广
  • 代做设计网站wordpress添加后台菜单
  • Adobe Illustrator 和 Adobe Photoshop 比较异同
  • 中国空间站有几个舱段阿里巴巴国际网站官网入口
  • WSF20N20:车载48V/12V DC-DC同步整流管
  • GEO 生成式引擎优化:技术路径与标杆企业实践 (2025年10月最新版)
  • 龙岩网站建设一般多少钱网站运营团队各岗位的职责是什么
  • notpad++工具使用正则,识别中文行加前缀
  • 【网络工程师】NAT网络地址转换技术
  • Rust 迭代器适配器
  • 鲜花购物网站源码淮安网站推广
  • 中国高定十大品牌seo排名方案
  • GitHub高质量的开源博客项目推荐
  • 峰峰企业做网站推广洛阳网站建设
  • 电子商务毕业设计网站专业搜索引擎seo服务商
  • 仓颉异步编程语法糖的深度剖析
  • JVM 执行引擎
  • 公司建立网站用于业务国内新闻摘抄2022年
  • 【计算机网络】IO复用方法(一)——引言