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),除若干指针外不使用额外空间。
相关推荐
玄米乌龙茶1232 分钟前
LLM 应用开发学习笔记:RAG 评估、参数调优与 Transformer 注意力机制
笔记·学习
Stark-C4 分钟前
Obsidian官方同步贵?在NAS上自建服务器,实现多端笔记完美同步
运维·服务器·笔记
不是山谷.:.22 分钟前
websocket的封装
开发语言·前端·网络·笔记·websocket·网络协议
我爱cope23 分钟前
【力扣hot100:239. 滑动窗口最大值】
算法·leetcode·职场和发展
承渊政道27 分钟前
【贪心算法】(经典实战应用解析(四):分发饼干、最优除法、跳跃游戏、跳跃游戏Ⅱ、加油站)
数据结构·c++·算法·leetcode·贪心算法·动态规划·哈希算法
问心无愧051328 分钟前
ctf show web入门153
笔记
m0_6294947329 分钟前
LeetCode 热题 100-----24.回文链表
数据结构·算法·leetcode·链表
EthanChou202031 分钟前
AI辅助开发笔记
笔记
中屹指纹浏览器33 分钟前
指纹浏览器代理链路匹配机制与网络风控溯源阻断方案
经验分享·笔记
_深海凉_38 分钟前
LeetCode热题100-二叉树展开为链表
算法·leetcode·链表