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

合并两个有序链表:双指针迭代法实现(C++)

一、问题描述

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

示例:

  • 输入:l1 = [1,2,4],l2 = [1,3,4],输出:[1,1,2,3,4,4]
  • 输入:l1 = [],l2 = [],输出:[]
  • 输入:l1 = [],l2 = [0],输出:[0]

二、解题思路

1. 递推关系分析

合并两个升序链表的核心是逐个比较两个链表的当前节点值,选择较小的节点接入新链表,直到其中一个链表遍历完毕。

  • 若链表 l1 的当前节点值 ≤ 链表 l2 的当前节点值,将 l1 的当前节点接入新链表,l1 指针后移;
  • 若链表 l2 的当前节点值更小,将 l2 的当前节点接入新链表,l2 指针后移;
  • 当其中一个链表遍历完成后,直接将另一个链表的剩余节点拼接至新链表末尾即可。

为简化头节点为空的边界处理,引入虚拟头节点,避免单独处理首个节点的选择逻辑。

2. 算法选择

  • 递归法:通过递归调用合并剩余节点,代码简洁但会产生递归调用栈,空间复杂度为 O (m+n)(m、n 为两个链表的长度),且递归深度较大时可能出现栈溢出;
  • 双指针迭代法:用指针遍历两个链表并拼接节点,仅使用常数级额外空间,时间复杂度为 O (m+n),空间复杂度为 O (1),是更高效的解法。

三、C++ 代码实现

http://www.cnnetsun.cn/news/10537.html

相关文章:

  • CVPR 2025最佳论文突破:DepthCrafter实现开放世界视频深度序列生成新范式
  • MEET 2026 | 荣获双奖,AI 开源点亮智能未来
  • Wan2.2-T2V-A14B支持自动字幕嵌入吗?多语种翻译生成测试
  • Wan2.2-T2V-A14B与Sora的技术路线差异比较
  • Java两种代理模式详解
  • MySQL基础篇——约束和事务
  • 【VSCode量子编程环境搭建指南】:手把手教你5步配置Qiskit开发环境
  • Flutter深度解析:从原理到实战的全栈开发指南
  • AI开眼了!多模态大模型架构全解析,从LLaVA到Qwen3-VL,小白也能秒懂的硬核指南
  • 4.10.1计算器含负数8086 ,基于8086的简易计算器可以显示负数,减法计算时可以得出负数显示,但是小于-9以后就显示E0溢出提示
  • Wan2.2-T2V-A14B能否生成适用于VR心理暴露疗法的创伤情境
  • 数据结构-栈(核心代码)
  • 哔哩下载姬:解锁B站视频离线收藏的终极方案
  • 关于电脑端抓包小程序的3种方法,黑客技术零基础入门到精通教程
  • AMD Nitro-E:轻量级文本到图像扩散模型家族的技术突破与性能解析
  • AI学习与职业发展:一次关于证书与能力的真实思考
  • 详细描述一条 SQL 在 MySQL 中的执行过程
  • 一文读懂GLM-Edge-4B-Chat:轻量化大模型如何重塑边缘智能应用新生态
  • Ubuntu22.04 5080配置深度学习环境
  • Wan2.2-T2V-A14B在虚拟演唱会背景制作中的大规模应用
  • Windows右键菜单清理与定制全攻略:ContextMenuManager高效使用指南
  • nginx实战-PHP——day2
  • 知识扩展--从病理学角度比较来自同一组织切片的Xenium 5K与Visium HD数据
  • 基于Wan2.2-T2V-A14B的AI导演系统原型设计思路
  • 【苍穹外卖-day12】
  • 金融项目的测试过程(额度申请审核的测试点设计)
  • C# AES加密在医疗系统中的真实应用案例(含完整源码与审计建议)
  • java计算机毕业设计球鞋商城系统小程序 基于SpringBoot的潮鞋微商城小程序设计与实现 JavaWeb限量球鞋交易平台小程序开发
  • Wan2.2-T2V-A14B能否生成黑白老电影风格?怀旧滤镜测试
  • 终极指南:原神自动化工具BetterGI完整使用手册