61.Merge k Sorted Lists(合并k个排序链表)
Level:
Hard
题目描述:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Example:
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6
思路分析:
思路一:通过归并排序思想,将k个排好序的链表,归并成一条有序的链表。
思路二:使用优先队列(priority_queue)实现堆,初始时将每个链表的第一个结点加入堆中,之后每次弹出堆顶元素,将这个结点指向的下一结点加入到堆中,直到所有结点添加完毕。
代码:
思路一:
public class Solution{
public ListNode mergeKLists(ListNode[] lists) {
if(lists==null||lists.length==0)
return null;
int start=0;
int end=lists.length-1;
return sort(lists,start,end);
}
public ListNode sort(ListNode[]lists,int start,int end){
if(start==end)
return lists[start];
int mid=(start+end)/2;
ListNode l=sort(lists,start,mid);
ListNode r=sort(lists,mid+1,end);
return merge(l,r);
}
public ListNode merge(ListNode l,ListNode r){
if(l==null)
return r;
if(r==null)
return l;
if(l.val<r.val){
l.next=merge(l.next,r);
return l;
}else{
r.next=merge(l,r.next);
return r;
}
}
}
思路二:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution{
public ListNode mergeKLists(ListNode[] lists){
if(lists==null||lists.length==0)
return null;
PriorityQueue<ListNode>q=new PriorityQueue<>(lists.length,new Comparator<ListNode>(){
@Override
public int compare(ListNode o1,ListNode o2){
return o1.val-o2.val ;
}
});//构造小顶堆
for(ListNode node:lists){ //每个链表的第一个节点先加入堆
if(node!=null)
q.offer(node);
}
ListNode res=new ListNode(0);
ListNode cur=res;
ListNode temp=null;
while(!q.isEmpty()){
temp=q.peek();
q.poll();
cur.next=temp;
cur=cur.next;
if(temp.next!=null){
q.offer(temp.next);
}
}
return res.next;
}
}
61.Merge k Sorted Lists(合并k个排序链表)的更多相关文章
- 【LeetCode每天一题】Merge Two Sorted Lists(合并两个排序链表)
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- [Leetcode] Merge k sorted lists 合并k个已排序的链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思 ...
- [LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- 【LeetCode】23. Merge k Sorted Lists 合并K个升序链表
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:合并,链表,单链表,题解,leetcode, 力扣,Py ...
- 【LeetCode】21. Merge Two Sorted Lists 合并两个有序链表
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:合并,有序链表,递归,迭代,题解,leetcode, 力 ...
- 21. Merge Two Sorted Lists(合并2个有序链表)
21. Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list s ...
- 【LeetCode每天一题】 Merge k Sorted Lists(合并K个有序链表)
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- [LeetCode]23. Merge k Sorted Lists合并K个排序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- 023 Merge k Sorted Lists 合并K个有序链表
合并K个有序链表,并且作为一个有序链表的形式返回.分析并描述它的复杂度. 详见:https://leetcode.com/problems/merge-k-sorted-lists/descripti ...
随机推荐
- Django学习——开发你的第一个Django应用2
接着上一节的内容来说.我们将继续关注与上一节制作的polls应用以及Django自动产生额度管理网站. 产生一个管理员用户 首先我们需要产生一个管理员用户,运行如下命令: python manage. ...
- C中对整数的大端对齐与小端对齐的理解
示例 /* 大端与小端对齐 说明: 1.对于arm, intel这种x86架构的复杂指令cpu,整数在内存中是 倒着存放的,低地址放低位,高地址放高位,称之为小端对齐 2.对于linux服务器的cpu ...
- Vue小白篇 - Vue介绍
Vue ?啥是Vue?能干嘛? vue 的介绍 Vue 是一套用于构建用户界面的 渐进式框架 ,与其它大型框架不同的是, Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层 前端三大框 ...
- 2.Web中使用iReport 整合----------创建html格式的
转自:https://wenku.baidu.com/view/104156f9770bf78a65295462.html 1.
- 369-双路千兆网络PCIe收发卡
双路千兆网络PCIe收发卡 一.产品概述 PCIe网络收发卡要求能支持千兆光口,千兆电口:半高板卡.板卡插于服务器,室温工作. 支持2路千兆光口,千兆电口. FPGA选用型号 XC7A50T-1FGG ...
- java String练习题
package java07; /* 题目: 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串,格式参照如下:[word1#word2#word3] 思路: 1.首先准备一个int[]数 ...
- pychrome激活
http://blog.csdn.net/fx677588/article/details/58164902
- MySQL Authentication plugin 'caching_sha2_password' cannot be loaded
很多用户在使用Navicat Premium 12连接MySQL数据库时会出现Authentication plugin 'caching_sha2_password' cannot be loade ...
- ERROR=(CODE=1153)
jdbc 连接oracle数据库(10.2.0.4),应用程序报错如下: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169870592)(ERR ...
- 【串线篇】SQL映射文件-联合查询(完结association+cellection)
1.级联属性的方式封装查出1-1 查钥匙的时候顺别把对应的级联的那把锁也查出来 1).两个JavaBean,Key里有对应的Lock(private Lock lock;//当前钥匙能开哪个锁:) 2 ...