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),除若干指针外不使用额外空间。
相关推荐
自小吃多2 小时前
电气安全检测说明书
笔记·安全
float_com2 小时前
LeetCode 88. 合并两个有序数组
leetcode
鱼鳞_2 小时前
Java学习笔记_Day23(双列集合)
java·笔记·学习
ZhiqianXia2 小时前
Pytorch 学习笔记(9): PyTorch.Compile
pytorch·笔记·学习
Xudde.2 小时前
班级作业笔记报告0x09
笔记·学习·安全·web安全·php
ZzYH222 小时前
文献阅读 260407-Leveraging edge artificial intelligence for sustainable agriculture
笔记
生信研究猿2 小时前
leetcode 101.对称二叉树(不会做)
算法·leetcode·职场和发展
sinat_255487813 小时前
泛型:类·学习笔记
java·jvm·笔记·学习
被考核重击3 小时前
计算机网络核心知识点笔记
网络·笔记·计算机网络