news 2026/5/12 18:49:16

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/9 8:13:13

AI人脸隐私卫士处理速度优化:批处理与异步机制实战

AI人脸隐私卫士处理速度优化&#xff1a;批处理与异步机制实战 1. 引言&#xff1a;从单图处理到高并发场景的挑战 随着AI图像处理技术的普及&#xff0c;本地化、低延迟、高安全性的隐私保护工具正成为个人和企业用户的刚需。AI人脸隐私卫士基于Google MediaPipe Face Detec…

作者头像 李华
网站建设 2026/5/10 15:18:02

动态打码系统搭建:AI人脸隐私卫士部署实战教程

动态打码系统搭建&#xff1a;AI人脸隐私卫士部署实战教程 1. 学习目标与背景介绍 在数字化时代&#xff0c;图像和视频中的人脸信息极易成为隐私泄露的源头。无论是社交媒体分享、监控数据归档&#xff0c;还是企业内部资料流转&#xff0c;如何高效、安全地对人脸进行脱敏处…

作者头像 李华
网站建设 2026/5/5 11:54:46

动态隐私打码技术详解:AI人脸隐私卫士核心算法解析

动态隐私打码技术详解&#xff1a;AI人脸隐私卫士核心算法解析 1. 技术背景与隐私保护挑战 在社交媒体、公共影像系统和智能监控广泛应用的今天&#xff0c;个人面部信息已成为最敏感的生物识别数据之一。一张未经处理的合照可能无意中暴露多人的隐私&#xff0c;尤其在远距离…

作者头像 李华
网站建设 2026/5/9 14:53:42

跨境电商必备:用HY-MT1.5-1.8B快速搭建多语言翻译服务

跨境电商必备&#xff1a;用HY-MT1.5-1.8B快速搭建多语言翻译服务 1. 引言&#xff1a;跨境电商的语言挑战与技术破局 在全球化浪潮下&#xff0c;跨境电商已成为企业拓展国际市场的重要路径。然而&#xff0c;语言障碍始终是制约用户体验和转化率的关键瓶颈。传统商业翻译AP…

作者头像 李华
网站建设 2026/5/2 14:47:00

宠物骨骼检测拓展:从人体到动物的模型迁移实战

宠物骨骼检测拓展&#xff1a;从人体到动物的模型迁移实战 引言 想象一下&#xff0c;你家的智能宠物摄像头不仅能识别猫咪在睡觉还是吃饭&#xff0c;还能精确分析它跳跃时的骨骼动作——这正是宠物智能硬件公司正在探索的新功能。但直接使用现成的人体骨骼检测模型时&#…

作者头像 李华
网站建设 2026/5/1 16:26:09

如何导入元件库?LTspice Web在线电路仿真扩展教程

如何在 LTspice Web 中导入自定义元件&#xff1f;——从零开始的实战指南 你有没有遇到过这种情况&#xff1a;想用 LTspice Web 快速验证一个新电源 IC 的电路性能&#xff0c;结果打开元件库却发现根本找不到这个芯片&#xff1f;点遍了 F2 的搜索框也没见踪影。 别急。这…

作者头像 李华