news 2026/9/24 6:28:45

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
合并两个有序链表:双指针迭代法实现(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++ 代码实现

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

27、游戏开发:物理引擎与瓦片地图的运用

游戏开发:物理引擎与瓦片地图的运用在游戏开发中,物理引擎和瓦片地图是两个重要的概念。物理引擎可以为游戏增添真实感,而瓦片地图则有助于创建大型游戏世界。下面我们来详细了解相关内容。物理引擎相关问题在游戏中使用物理引擎时&#xff0…

作者头像 李华
网站建设 2026/9/23 18:48:19

Wan2.2-T2V-A14B如何处理高速运动物体的模糊效应

Wan2.2-T2V-A14B 如何应对高速运动中的模糊挑战 在影视特效、广告制作和虚拟内容生成领域,一个长期困扰AI视频模型的难题正被逐步破解:当画面中出现赛车疾驰、运动员冲刺或爆炸碎片飞溅这类高速动态场景时,传统文本到视频(T2V&…

作者头像 李华
网站建设 2026/9/23 1:20:18

ROG 魔盒透视版 AI 电竞路由器现已开售

ROG 魔盒透视版 AI 电竞路由器已登陆华硕网络京东自营旗舰店,凭借侧透白光的潮酷设计、WiFi7 的巅峰网速与全方位电竞优化,既能成为桌搭爱好者的 “颜值担当”,又能满足电竞玩家对低延迟、稳信号的极致需求,堪称 “性能与格调双在…

作者头像 李华