LeetCode Hot100 23.合并K个升序链表

题目

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

方法:分治,类似于归并

class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        return mergeKLists(lists, 0, lists.length);
    }
    private ListNode mergeKLists(ListNode[] lists, int i, int j) {
        int m = j - i;
        if (m == 0)
            return null; // 注意输入的 lists 可能是空的
        if (m == 1)
            return lists[i]; // 注意输入的 lists 可能是空的
        ListNode left = mergeKLists(lists, i, i + m / 2);// 合并左半部分
        ListNode right = mergeKLists(lists, i + m / 2, j);// 合并右半部分
        return merge(left, right); 
    }

    // 合并两个有序链表
    private ListNode merge(ListNode list1, ListNode list2) {
        ListNode dummy = new ListNode(); // 用哨兵节点简化代码逻辑
        ListNode cur = dummy; // cur 指向新链表的末尾
        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. 【算法】合并K升序

    2023-12-15 12:02:03       58 阅读
  2. LeetCode-23. 合并 K 升序

    2023-12-15 12:02:03       44 阅读
  3. LeetCode-23 合并 K 升序

    2023-12-15 12:02:03       64 阅读
  4. LeetCode 23 合并 K 升序

    2023-12-15 12:02:03       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 12:02:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 12:02:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 12:02:03       82 阅读
  4. Python语言-面向对象

    2023-12-15 12:02:03       91 阅读

热门阅读

  1. dapper使用Insert或update时部分字段不映射到数据库

    2023-12-15 12:02:03       58 阅读
  2. Spring Boot 常用注解分类

    2023-12-15 12:02:03       52 阅读
  3. axios跨域问题, 这种情况下 withCredentials 不能为true

    2023-12-15 12:02:03       60 阅读
  4. 746.使用最小花费爬楼梯

    2023-12-15 12:02:03       60 阅读
  5. C# DataTable 总结常用方法

    2023-12-15 12:02:03       52 阅读
  6. C# 德语法语解析浮点数不正确的问题记录

    2023-12-15 12:02:03       67 阅读
  7. 解析Python的Lambda函数:【理解】与【运用】

    2023-12-15 12:02:03       52 阅读
  8. 关于C#反射概念,附带案例!

    2023-12-15 12:02:03       62 阅读
  9. Go并发编程:保障安全与解锁奥秘

    2023-12-15 12:02:03       61 阅读
  10. 异常处理返回结构体,做到全局统一

    2023-12-15 12:02:03       67 阅读