【重点】23.合并K个升序链表

题目

法1:分治合并

在这里插入图片描述

class Solution {
   
    public ListNode mergeKLists(ListNode[] lists) {
   
        return merge(lists, 0, lists.length - 1);
    }

    public ListNode merge(ListNode[] lists, int l, int r) {
   
        if (l > r) {
   
            return null;
        }
        if (l == r) {
   
            return lists[l];
        }
        int mid = l + (r - l) / 2;
        return merge2List(merge(lists, l, mid), merge(lists, mid + 1, r));
    }

    public ListNode merge2List(ListNode first, ListNode second) {
   
        ListNode dummy = new ListNode(-1);
        ListNode tmp = dummy;
        while (first != null && second != null) {
   
            if (first.val <= second.val) {
   
                tmp.next = first;
                first = first.next;
            } else {
   
                tmp.next = second;
                second = second.next;
            }
            tmp = tmp.next;
        }
        if (first == null) {
   
            tmp.next = second;
        }
        if (second == null) {
   
            tmp.next = first;
        }

        return dummy.next;
    }
}

法2:其他

在这里插入图片描述

class Solution {
   
    public ListNode mergeKLists(ListNode[] lists) {
   
        if (lists.length == 0) {
   
            return null;
        }
        if (lists.length == 1) {
   
            return lists[0];
        }
        ListNode merged = lists[0];
        for (int i = 1; i < lists.length; ++i) {
   
            merged = merge(merged, lists[i]);
        }

        return merged;
    }

    public ListNode merge(ListNode first, ListNode second) {
   
        ListNode dummy = new ListNode(-1);
        ListNode tmp = dummy;
        while (first != null && second != null) {
   
            if (first.val <= second.val) {
   
                tmp.next = first;
                first = first.next;
            } else {
   
                tmp.next = second;
                second = second.next;
            }
            tmp = tmp.next;
        }
        if (first == null) {
   
            tmp.next = second;
        }
        if (second == null) {
   
            tmp.next = first;
        }

        return dummy.next;
    }
}

相关推荐

  1. LeetCode-23. 合并 K 升序

    2023-12-15 05:06:01       44 阅读
  2. LeetCode-23 合并 K 升序

    2023-12-15 05:06:01       64 阅读
  3. LeetCode 23 合并 K 升序

    2023-12-15 05:06:01       60 阅读
  4. LeetCode23.合并K升序

    2023-12-15 05:06:01       45 阅读
  5. 23. 合并 K 升序 - 力扣(LeetCode)

    2023-12-15 05:06:01       41 阅读
  6. 力扣23. 合并k升序

    2023-12-15 05:06:01       30 阅读

最近更新

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

    2023-12-15 05:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

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

    2023-12-15 05:06:01       82 阅读
  4. Python语言-面向对象

    2023-12-15 05:06:01       91 阅读

热门阅读

  1. Electron V28主进程与渲染进程互相通信总结

    2023-12-15 05:06:01       54 阅读
  2. vue,uniapp生成二维码

    2023-12-15 05:06:01       56 阅读
  3. virtual 安装ubuntu 和 centos

    2023-12-15 05:06:01       47 阅读
  4. Redis过期淘汰策略

    2023-12-15 05:06:01       45 阅读
  5. 正则表达式入门与实践

    2023-12-15 05:06:01       56 阅读
  6. 判断某个ip是否在某个网段下

    2023-12-15 05:06:01       64 阅读
  7. 「IoT&云服务」概念整理

    2023-12-15 05:06:01       57 阅读
  8. ifconfig命令和ip命令

    2023-12-15 05:06:01       57 阅读
  9. Spring 使用 MongoDB 时的数据类型转换器

    2023-12-15 05:06:01       68 阅读
  10. Mac卸载nodejs

    2023-12-15 05:06:01       43 阅读
  11. http的请求头和响应头安全漏洞bug修改

    2023-12-15 05:06:01       58 阅读
  12. CSS面试题及其答案

    2023-12-15 05:06:01       57 阅读