23. Merge k Sorted Lists (JAVA)
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
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if(lists == null || lists.length == 0) //pay attention to null
return null; ListNode head = null;
ListNode cur = head; //cur.next point to the node to give value
PriorityQueue<ListNode> minHeap = new PriorityQueue<>(lists.length,
new Comparator<ListNode>(){ //小顶堆,默认容量11,这里改为列表长度
@Override
public int compare(ListNode n1, ListNode n2){
return n1.val - n2.val;
}
}); for(ListNode n: lists){
if(n!=null) minHeap.add(n); //pay attention to null
} while(minHeap.size()>0){
//pop
if(head==null){
head = minHeap.poll();
cur = head;
}
else{
cur.next = minHeap.poll();
cur = cur.next;
} //push
if(cur.next != null){
minHeap.add(cur.next);
}
}
return head;
}
}
PriorityQueue是通过小顶堆实现的,如果要使用大顶堆,那么需要自定义Comparator函数。
List问题特别注意:需要额外讨论null的情况,比如本题中,需要保证PriorityQueue不能加入null元素。
23. Merge k Sorted Lists (JAVA)的更多相关文章
- 23. Merge K Sorted Lists (Java, 归并排序的思路)
		
题目:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
 - 23. Merge k Sorted Lists - LeetCode
		
Question 23. Merge k Sorted Lists Solution 题目大意:合并链表数组(每个链表中的元素是有序的),要求合并后的链表也是有序的 思路:遍历链表数组,每次取最小节点 ...
 - [Leetcode][Python]23: Merge k Sorted Lists
		
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 23: Merge k Sorted Listshttps://oj.leet ...
 - 21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
		
21.Merge Two Sorted Lists 初始化一个指针作为开头,然后返回这个指针的next class Solution { public: ListNode* mergeTwoLists ...
 - 刷题23. Merge k Sorted Lists
		
一.题目说明 这个题目是23. Merge k Sorted Lists,归并k个有序列表生成一个列表.难度为Hard,实际上并不难,我一次提交就对了. 二.我的解答 就是k路归并,思路很简单,实现也 ...
 - 蜗牛慢慢爬 LeetCode 23. Merge k Sorted Lists [Difficulty: Hard]
		
题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
 - Java [leetcode 23]Merge k Sorted Lists
		
题目描述: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complex ...
 - [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 ...
 
随机推荐
- Ubuntu系统配置
			
0.基本配置 0.1初始设置 (1)开户root账号并重启系统: 打开gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 添加greeter- ...
 - new words
			
Your cooperation is greatly appreciated 感谢您的合作! budget 预算
 - html 5 dialog标签:定义特殊术语或短语
			
html5中<dialog>标签作用是定义特殊术语或短语,这里主机吧详细介绍下<dialog>标签用法.<dialog>标签属性以及<dialog>标签 ...
 - sprinmvc与 Struct2框架的区别
			
1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...
 - LinkedHashMap和TreeMap的有序性
			
做一个数组的多属性动态排序的功能,使用map时发现有序性问题. LinkedHashMap会存储数据的插入顺序,是进入时有序:TreeMap则是默认key升序,是进入后有序(hashMap .hash ...
 - jQuery获取各种位置方法
			
一.获取窗口的宽高 1.获取流览器显示区域的高度 : $(window).height(); 2.获取流览器显示区域的宽度 : $(window).width(); 3.获取文档流的高度 : $(do ...
 - qt qextserialport __imp_SetupDiGetDeviceRegistryPropertyW
			
使用 qextserialport 编写串口助手的时候,提示找不到 __imp_SetupDiGetDeviceRegistryPropertyW,经过摸索有以下两种解决方法: 第一种: 把相应的源文 ...
 - LeetCode 94. Binary Tree Inorder Traversal 二叉树的中序遍历 C++
			
Given a binary tree, return the inorder traversal of its nodes' values. Example: Input: [,,] \ / Out ...
 - JAVA学习记录(一)————JAVA中的集合类
			
这个图是总体的框架图,主要是两个接口Collection和Map都继承接口Iterator(Iterable),为了实现可以使用迭代器.Collection和Map类似平级关系. 1.这里我先学习下A ...
 - css边框的一些属性
			
边框样式值如下:none : 无边框.与任何指定的border-width值无关hidden : 隐藏边框.IE不支持dotted : 在MAC平台上IE4+与WINDOWS和UNIX平台上IE5.5 ...