LeetCode刷题笔记:合并两个有序链表(0021)

题目链接

https://leetcode.cn/problems/merge-two-sorted-lists/

题目描述

给定两个按非递减顺序排列的单链表 list1 和 list2,将它们合并为一个新的有序链表并返回。

解题思路

  • 迭代合并:
    • 使用哑节点 dummy 和指针 cur。
    • 每次从 list1、list2 取较小节点接到 cur 后面并前进对应链表。
    • 一方耗尽后,直接把另一方剩余部分接到末尾。
  • 边界情况:若某一链表为空,答案即为另一链表。

题解代码

java 复制代码
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode dummy = new ListNode();
        ListNode cur = dummy;
        while (list1 != null && list2 != null) {
            if (list1.val < list2.val) {
                cur.next = list1;
                list1 = list1.next;
            } else {
                cur.next = list2;
                list2 = list2.next;
            }
            cur = cur.next;
        }
        cur.next = (list1 != null) ? list1 : list2;
        return dummy.next;
    }
}

复杂度分析

  • 时间复杂度:O(n + m),n、m 分别为两链表长度。
  • 空间复杂度:O(1),除若干指针外不使用额外空间。
相关推荐
深圳老胡4 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
坤坤子吖4 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
乐橙开放平台5 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
零基础1235 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell
夏幻灵5 小时前
每日一题:LeetCode 206:反转链表——三指针与原地反转详解
算法·leetcode·链表
ACP广源盛139246256735 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
敲个大西瓜6 小时前
langchain笔记(一)
redis·笔记·langchain
带金箍的至尊宝6 小时前
系统架构设计师笔记 05:第2章硬件与软件基础,冯诺依曼结构怎么考
数据库·笔记·系统架构
知产xiao_xin7 小时前
商标权的内容和限制
经验分享·笔记·知识产权
陈年老古董7 小时前
Hive 函数学习笔记(上):单行函数与炸裂函数
hive·笔记·学习