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 分钟前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
学计算机的计算基15 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana220 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
AOwhisky22 分钟前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
砚凝霜23 分钟前
软考网络工程师|第 2 章 信道延迟、传输介质、数据编码、数字调制、PCM 完整备考笔记
网络·笔记·pcm
To_OC8 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎9 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC10 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
遇乐的果园13 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园15 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习