博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]合并K个排序链表(Merge k Sorted Lists)
阅读量:5900 次
发布时间:2019-06-19

本文共 968 字,大约阅读时间需要 3 分钟。

题目描述

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

示例:

输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6

ListNode数据结构

class ListNode {    int val;    ListNode next;    ListNode(int x) {        val = x;    }}

解决方法

相邻链表两两合并,两两合并详情见

public ListNode mergeKLists(ListNode[] lists) {        int interval = 1;        while (interval < lists.length) {            for (int i = 0; i < lists.length - interval; i += interval * 2) {                lists[i] = merge2Lists(lists[i], lists[i + interval]);            }            interval *= 2;        }        return lists.length > 0 ? lists[0] : null;    }    public ListNode merge2Lists(ListNode l1, ListNode l2) {        if (l1 == null)            return l2;        if (l2 == null)            return l1;        if (l1.val < l2.val) {            l1.next = merge2Lists(l1.next, l2);            return l1;        } else {            l2.next = merge2Lists(l1, l2.next);            return l2;        }    }

时间复杂度: O(Nlogk),k是链表的数目

本文首发:

转载地址:http://tnesx.baihongyu.com/

你可能感兴趣的文章
jQuery Ajax MVC 下拉框联动
查看>>
每天一个linux命令(21):chgrp,chown,chmod
查看>>
html
查看>>
常见SQL Server导入导出数据的几个工具
查看>>
在程序出现问题,当找不到错误时,第一时间用try ,catch包括起来
查看>>
c#创建文件夹
查看>>
Hibernate事务代码规范写法
查看>>
网络最大流问题算法小结 [转]
查看>>
面试之Java知识整理
查看>>
基于udp的scoket通信
查看>>
iOS推送消息报错误“Domain=NSCocoaErrorDomain Code=3000”的可能问题
查看>>
Android开发指南(30) —— Multimedia and Camera
查看>>
kvm-1
查看>>
Jmeter的接口测试简介
查看>>
第二阶段冲刺03
查看>>
hdu1045 Fire Net---二进制枚举子集
查看>>
drupal网站邮件发送功能的实现
查看>>
leetcode 64. Minimum Path Sum
查看>>
查看表空间数据文件
查看>>
Linux输入输出管理
查看>>