news 2026/5/24 22:52:14

21. 合并两个有序链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
21. 合并两个有序链表

21. 合并两个有序链表 - 力扣(LeetCode)

简单

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

示例 1:

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

示例 2:

输入:l1 = [], l2 = [] 输出:[]

示例 3:

输入:l1 = [], l2 = [0] 输出:[0]

提示:

  • 两个链表的节点数目范围是[0, 50]
  • -100 <= Node.val <= 100
  • l1l2均按非递减顺序排列

📝 核心笔记:合并两个有序链表 (递归法)

1. 核心思想 (一句话总结)

“谁小谁当头,剩下的任务交给下级。”

比较两个链表的头节点,数值小的那个作为当前的头,然后它的 next 指向剩余部分合并后的结果(递归调用)。

💡 直观理解:

只要选出了当前最小的节点,我就不用管剩下的怎么排了,直接把剩下的任务“外包”给递归函数,等它排好序返回给我接上就行。

2. 算法流程 (三步走)
  1. 判空 (终止条件):
    • 如果list1空了,没得比了,直接接上list2
    • 如果list2空了,直接接上list1
  1. 选头 (比较大小):
    • 看谁更小。假设list1小,那list1就是老大。
  1. 连接 (递归):
    • list1的后面 (next) 应该接谁?接 “list1剩余部分” 和 “list2完整部分” 合并后的结果。
🔍 代码回忆清单
// 题目:LC 21. 合并两个有序链表 class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { // 1. 终止条件 (底线) // 只要有一条链表空了,就直接返回另一条 (另一条也是有序的,直接接上) if (list1 == null) return list2; if (list2 == null) return list1; // 2. 递归主逻辑 (选老大) if (list1.val < list2.val) { // list1 小,list1 当头 // list1 的下家是谁? -> 是 (list1.next 和 list2) PK 出来的赢家 list1.next = mergeTwoLists(list1.next, list2); return list1; // 别忘了返回当前的头 } else { // list2 小 (或相等),list2 当头 // list2 的下家是谁? -> 是 (list1 和 list2.next) PK 出来的赢家 list2.next = mergeTwoLists(list1, list2.next); return list2; } } }
⚡ 快速复习 CheckList (易错点)
  • [ ]终止条件写全了吗?必须处理list1 == nulllist2 == null两种情况。
  • [ ]返回值是谁?返回的是当前被选中的那个较小的节点(即当前的头)。
  • [ ]空间复杂度?递归法是 $O(N+M)$,因为消耗了栈空间。如果面试官要求 $O(1)$ 空间,需要改用迭代法(Dummy Node)。
  • [ ]相等怎么处理?代码中else处理了大于等于的情况,相等时选list2,这没问题,依然保持有序。
🖼️ 场景联想

拉拉链。

拉链的锁头就是递归函数。

它看着左边齿轮 (list1) 和右边齿轮 (list2),哪个位置低(数值小)就先把哪个齿轮扣进去,然后往上移一格,继续看下一个。

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

图解说明硬件I2C起始与停止条件实现原理

深入理解硬件I2C的起始与停止&#xff1a;不只是拉高拉低在嵌入式开发中&#xff0c;你有没有遇到过这样的场景&#xff1f;调试一个温湿度传感器&#xff0c;代码写得严丝合缝&#xff0c;地址也核对了八百遍&#xff0c;可就是读不到数据。用逻辑分析仪一抓——SDA线卡在低电…

作者头像 李华
网站建设 2026/5/22 9:34:45

传统vs深度学习:骨骼检测方法对比,云端快速验证

传统vs深度学习&#xff1a;骨骼检测方法对比&#xff0c;云端快速验证 引言&#xff1a;为什么需要骨骼检测技术&#xff1f; 骨骼检测&#xff08;又称人体关键点检测&#xff09;是计算机视觉领域的重要技术&#xff0c;它能从图像或视频中定位人体的关节位置&#xff08;…

作者头像 李华
网站建设 2026/5/23 17:10:01

HY-MT1.5-1.8B vs 商业翻译API:实测对比报告

HY-MT1.5-1.8B vs 商业翻译API&#xff1a;实测对比报告 1. 引言 在全球化加速的背景下&#xff0c;高质量、低延迟的机器翻译能力已成为智能应用的核心基础设施。无论是跨境电商、跨国协作&#xff0c;还是内容本地化与实时通信&#xff0c;用户对翻译服务的需求正从“能用”…

作者头像 李华
网站建设 2026/5/22 14:30:54

AI人脸隐私卫士在社交媒体的应用:用户上传预处理实战

AI人脸隐私卫士在社交媒体的应用&#xff1a;用户上传预处理实战 1. 引言&#xff1a;社交媒体时代的隐私挑战与自动化应对 随着社交媒体的普及&#xff0c;用户每天上传数以亿计的照片和视频。然而&#xff0c;这些内容中往往包含大量未授权的人脸信息——无论是街拍、聚会合…

作者头像 李华
网站建设 2026/5/20 13:42:03

HY-MT1.5-1.8B性能优化:让翻译速度提升3倍的技巧

HY-MT1.5-1.8B性能优化&#xff1a;让翻译速度提升3倍的技巧 在实时翻译、边缘计算和多语言交互日益普及的今天&#xff0c;模型推理效率直接决定了用户体验与部署成本。腾讯开源的混元翻译模型HY-MT1.5-1.8B凭借其“小体积、高质量”的特性&#xff0c;成为轻量级翻译场景中的…

作者头像 李华
网站建设 2026/5/21 10:36:40

利用AXI DMA实现千兆以太网数据直传

打通高速数据动脉&#xff1a;AXI DMA如何让千兆以太网“零拷贝”飞起来你有没有遇到过这样的场景&#xff1f;FPGA系统接上千兆网口&#xff0c;满心期待地抓取视频流或传感器数据&#xff0c;结果刚到几百兆速率就开始丢包。调试发现CPU占用率飙到90%以上&#xff0c;几乎被中…

作者头像 李华