[leetcode]23. Merge k Sorted Lists归并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6
题意:
归并k个有序链表。
思路:
用一个最小堆minHeap,将所有链表的头结点放入
新建一个linkedlist存储结果
minHeap里面每remove一个node(最小堆保证了该元素为当前堆中最小), 就加到新建linkedlist中,并将该node.next加入到堆里
代码:
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
// special case
if(lists.length==0) return null; //1. priorityqueue ((o1,o2)-> o1.val, o2.val) acsending order
PriorityQueue<ListNode> heap = new PriorityQueue<>((o1,o2)-> o1.val-o2.val); //add each list's each node into the heap, in acsending order
int size = lists.length;
for(int i = 0; i<size; i++){
if(lists[i]!=null){
heap.add(lists[i]); //注意这步操作直接把list的每个节点都扔进了heap }
}
//2. create a new linkedlist
ListNode fakeHead = new ListNode(-1);
ListNode current = fakeHead; //3. add every node from priorityqueue's removing
while(heap.size()!=0){
ListNode node = heap.remove();
current.next = node;
current=current.next;
if(node.next!=null) heap.add(node.next);
}
return fakeHead.next;
}
}
[leetcode]23. Merge k Sorted Lists归并k个有序链表的更多相关文章
- [LeetCode]21. 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 21. Merge Two Sorted Lists合并两个有序链表 (C++)
题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...
- 【LeetCode】Merge Two Sorted Lists(合并两个有序链表)
这道题是LeetCode里的第21道题. 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1-&g ...
- leetcode 21 Merge Two Sorted Lists 合并两个有序链表
描述: 合并两个有序链表. 解决: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) ...
- Leetcode 23.Merge Two Sorted Lists Merge K Sorted Lists
Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list shoul ...
- 【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 ...
- 021 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] 21. 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 ...
随机推荐
- Golang 之 interface接口全面理解
什么是interface 在面向对象编程中,可以这么说:“接口定义了对象的行为”, 那么具体的实现行为就取决于对象了. 在Go中,接口是一组方法签名(声明的是一组方法的集合).当一个类型为接口中的所有 ...
- windows server 修改远程桌面连接端口号
1. [运行]输入 regedit 2. 在注册表编辑器中找到以下PortNamber键,改为要使用的远程端口,如10000. HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo ...
- Docker进入容器后使用ifconfig等命令“command not found”解决办法
当进入一个容器后,使用ifconfig.ip addr等命令时,出现如下“command not found”: 解决办法: yum update yum -y install n ...
- NumPy-快速处理数据--ndarray对象--数组的创建和存取
本文摘自<用Python做科学计算>,版权归原作者所有. NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了 ...
- Azure CosmosDB (3) 选择适当的一致性级别
<Windows Azure Platform 系列文章目录> 绝大部分的商业分布式数据库,要求开发人员选择两个极端的数据库一致性:强一致性(Strong Consistency)和最终一 ...
- 关于Spring的那点事
一.Spring约束 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="htt ...
- Kong安装教程(v1.0.2)
使用的软件 Unbuntu 虚拟机(有自己的服务器更好) PostgreSQL kong kong-dashboard docker spring boot 安装 PostgreSQL kong 需要 ...
- 饥饿的牛(dp一维最大覆盖)
问题 H: 饥饿的牛 时间限制: 1 Sec 内存限制: 128 MB提交: 12 解决: 12[提交][状态][讨论版][命题人:外部导入][Edit] [TestData] [同步数据] 题目 ...
- Faster R-CNN代码例子
主要参考文章:1,从编程实现角度学习Faster R-CNN(附极简实现) 经常是做到一半发现收敛情况不理想,然后又回去看看这篇文章的细节. 另外两篇: 2,Faster R-CNN学习总结 ...
- UE4 UMG
转自:https://www.cnblogs.com/kadaj/p/6412937.html 1.创建关卡类 1.创建C++类继承LevelScriptActor 2.打开关卡蓝图 Class Se ...