【中等】题解力扣21:合并两个有序链表

题目详情

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 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. 迭代法:使用哑节点(dummy node)简化链表操作,避免处理头节点为空的边界情况。
  2. 双指针遍历 :同时遍历两个链表,比较当前节点的值:
    • 将较小值的节点链接到新链表。
    • 移动较小值节点所在链表的指针。
  3. 拼接剩余节点:当其中一个链表遍历完成后,将另一个链表的剩余部分直接链接到新链表末尾。
  4. 空间优化 :直接复用原链表节点,不创建新节点,空间复杂度为 O(1)

代码实现(Java版)

java 复制代码
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode dummy = new ListNode(0); // 哑节点简化操作
        ListNode cur = dummy;
        
        while (list1 != null && list2 != null) {
            if (list1.val <= list2.val) {
                cur.next = list1;  // 直接复用list1节点
                list1 = list1.next;
            } else {
                cur.next = list2;  // 直接复用list2节点
                list2 = list2.next;
            }
            cur = cur.next;
        }
        
        // 拼接剩余链表
        cur.next = (list1 != null) ? list1 : list2;
        return dummy.next;
    }
}

代码说明

  1. 哑节点(dummy)
  • 初始化一个值为0的节点,其next指向新链表的头节点。
  • 避免处理空链表时的边界条件,使代码更简洁。
  1. 循环比较
  • list1list2均非空时,比较当前节点值。
  • 将较小值节点链接到cur.next,并移动对应链表的指针。
  1. 剩余链表处理
  • 循环结束后,其中一个链表可能还有剩余节点。
  • 通过三元运算符直接将剩余链表链接到新链表末尾。
  1. 返回值
  • dummy.next指向新链表的实际头节点,直接返回即可。

提交详情(执行用时、内存消耗)

相关推荐
我不是混子17 分钟前
如何保证接口幂等性?
java·后端
_院长大人_28 分钟前
阿里云云效将本地的maven相关文件批量推送到阿里云仓库以及使用
java·阿里云·maven
帅帅爱数学34 分钟前
DeepMimic论文详细解析:基于示例引导的深度强化学习实现物理仿真角色技能
算法·强化学习
麦兜*38 分钟前
Redis 7.0 新特性深度解读:迈向生产级的新纪元
java·数据库·spring boot·redis·spring·spring cloud·缓存
我是华为OD~HR~栗栗呀40 分钟前
测试转C++开发面经(华为OD)
java·c++·后端·python·华为od·华为·面试
龙茶清欢41 分钟前
最新版 springdoc-openapi-starter-webmvc-ui 常用注解详解 + 实战示例
java·spring boot·ui·spring cloud
Dream it possible!1 小时前
LeetCode 面试经典 150_哈希表_快乐数(45_202_C++_简单)(哈希表;快慢指针)
leetcode·面试·散列表
IT成长日记1 小时前
【LVS入门宝典】LVS调度算法轮询(RR)深度解析:从原理到实战的公平调度之道
算法·lvs·rr·轮询调度算法
智界工具库1 小时前
《IDEA 2025 长效使用指南:2099 年有效期配置实战之JetBrains全家桶有效》
java·ide·intellij-idea