Hot100:合并两个有序链表(Merge Two Sorted Lists)哨兵节点归并 ACERS 解析
副标题 / 摘要 这是链表版的“归并排序合并步骤”:两条升序链表像两根排好队的队伍,比较头部把更小的节点接到结果尾部即可。本文用 ACERS 结构把哨兵节点迭代写法讲透,并给出递归对照与多语言可运行实现。 预计阅读时长:10~12 分钟 标签:Hot100、链表、归并、双指针 SEO 关键词:Hot100, Merge Two Sorted Lists, 合并两个有序链表, 归并, 哨兵节点, LeetCode 21 元描述:哨兵节点 + 双指针 O(m+n) 合并两个升序链表,附递归对比、工程迁移与多语言实现。 目标读者 正在刷 Hot100 / 准备面试的同学 写链表题经常丢头/断链、希望建立稳定模板的中级开发者 需要在 C/C++/Go/Rust 等语言里熟练做“拼接式合并”的工程师 背景 / 动机 “合并两个有序链表”看上去是简单题,但它非常像工程里的真实任务: 合并两路已排序的数据流(日志、事件、时间线) 合并两份排序好的列表(缓存片段、分片结果、分页结果) 在 O(1) 额外空间下复用节点,避免额外分配与拷贝 更重要的是:它是很多题的前置技能(如合并 k 个链表、排序链表、分治归并)。 把这个模板写熟,你后续的链表题会明显更顺。 核心概念 升序链表:沿 next 方向节点值非递减 拼接式合并(splicing):不创建新节点(除哨兵节点外),只重连 next 指针把节点接到结果链表 哨兵节点(dummy/sentinel):用一个虚拟头简化“结果链表头是谁”的特判 尾指针(tail):始终指向结果链表的最后一个节点,方便 O(1) 追加 A — Algorithm(题目与算法) 题目还原 给你两个升序链表 list1 和 list2 的头节点, 请将它们合并为一个新的 升序 链表并返回。 新链表是通过 拼接 给定的两个链表的所有节点组成的。 ...