Merge K Sorted List(含Merge Two Sorted LIst) leetcode java
问题描述:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
分析:
将k个sorted list合并为一个sorted list
借鉴归并排序的方法,自顶向下,先递归地对链表的前半部分和后半部分进行归并排序,最后再merge.
二分时,mid = (len - 1)/ 2,这样划分更为均匀,而不是 len / 2
算法:
/**
* 方法一、LinkNode数组
* 时间复杂度O(nlogk)
* @param list
* @return
*/
public static LinkNode mergeKSortedList(LinkNode[] list){
if(list == null || list.length == 0)
return null;
int len = list.length;
if(len == 1)
return list[0];
int mid = (len - 1)/ 2; //二分的时候,注意 mid = (len - 1) / 2,而不是 len/2,因为后者平分不均匀,前一种划分更为合理
LinkNode[] list1 = new LinkNode[mid + 1] ;
LinkNode[] list2 = new LinkNode[len - mid - 1] ;
for(int i = 0 ;i < list1.length ; i++)
list1[i] = list[i];
for(int j = list1.length ;j < len;j++)
list2[j - list1.length] = list[j];
LinkNode l1 = mergeKSortedList(list1);
LinkNode l2 = mergeKSortedList(list2); return mergeTwoSortedList(l1,l2);
} //方法二、List<LinkNode> 存储k个sorted list的头结点
public static LinkNode mergeKSortedList_1(List<LinkNode> lists){
if(lists == null || lists.size() == 0)
return null;
if(lists.size() == 1)
return lists.get(0);
int len = lists.size(); int mid = (len - 1) / 2;
List<LinkNode> list1 = lists.subList(0, mid + 1);
List<LinkNode> list2 = lists.subList(mid + 1, len);
LinkNode l1 = mergeKSortedList_1(list1);
LinkNode l2 = mergeKSortedList_1(list2); return mergeTwoSortedList(l1, l2);
} //两个链表链接
public static LinkNode mergeTwoSortedList(LinkNode l1,LinkNode l2){ LinkNode head = new LinkNode(0); //创建一个头结点,最后还要删掉
LinkNode p = head;
while(l1 != null && l2 != null){
if(l1.val <= l2.val){
p.next = l1;
l1 = l1.next;
} else{
p.next = l2;
l2 = l2.next;
}
p = p.next;
} p.next = (l1 != null) ? l1 : l2;
return head.next;// head的下一个节点是第一个数据结点
}
Merge K Sorted List(含Merge Two Sorted LIst) leetcode java的更多相关文章
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- No.023:Merge k Sorted Lists
问题: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- Merge k Sorted Lists
1. Merge Two Sorted Lists 我们先来看这个 问题: Merge two sorted linked lists and return it as a new list. The ...
- LeetCode:Merge k Sorted Lists
题目链接 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexi ...
- 71. Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- Merge k Sorted Lists Leetcode Java
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 使 ...
- 【leetcode】Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- [leetcode 23]Merge k Sorted Lists
1 题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexi ...
- 【Leetcode】【Hard】Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 解 ...
随机推荐
- (转)Jenkins持续集成
(二期)14.持续集成工具jenkins [课程14]持续集...概念.xmind0.6MB [课程14]持续集成...kins.xmind43.3KB [课程14预习]持续...kins.xmind ...
- CssClass="Hidden"和Visible="False"
<asp:Label ID="lblNoCustomTableItemCheckedInfo" runat="server" CssClass=" ...
- Logstash Introduction
https://www.cnblogs.com/aresxin/p/8035137.html Elasticsearch是个开源分布式搜索引擎,提供搜集.分析.存储数据三大功能.它的特点有:分布式,零 ...
- Css下拉菜单设置
<style type="text/css"> *{margin:0px;padding:0px;}设置所有标签属性<初始化页面属性> #nav{backg ...
- hihoCoder 1233 : Boxes(盒子)
hihoCoder #1233 : Boxes(盒子) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 There is a strange ...
- Java单例设计模式(实现Java的一个类只有一个对象)
单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象. 如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一 ...
- layui upload 后台获取不到值
后台获取不到值方法一: <script> layui.use('upload', function () { var upload = layui.upload; //执行实例 var u ...
- 小程序之map地图上不能在覆盖层
问题:页面上有一个地图功能,地图上面有两个按钮,是需要覆盖在地图上的,在小程序编辑器中显示是没问题的,但是扫码测试后发现在手机上不显示这两个按钮 解决方法:使用cover-viwe标签包裹一下就可以了
- React创建组件的三种方式及其区别
内容转载于http://www.cnblogs.com/wonyun/p/5930333.html React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归; 具体的三种方式: ...
- C# Combobox联动
接上一篇博文,对界面做一个小修改,做4个combobox,形成窗口之间的联动: 界面如下: 选择combobox里的条件,单击查询获取数据 首先连接数据库,获取到数据到第一个combobox里,代码在 ...