0008 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode MergeKLists(ListNode[] lists) {
ListNode res = new ListNode();
ListNode p = res;
List<ListNode> index = new List<ListNode>();
for(int i=; i<lists.Length; i++)
{
ListNode node = new ListNode();
node.next = lists[i];
index.Add(node);
}
while(index.Count != )
{
List<int> mins = new List<int>();
int min = int.MaxValue;
for(int i=index.Count-; i>=; i--)
{
if(index[i].next != null)
{
if (index[i].next.val < min)
{
min = index[i].next.val;
mins.Clear();
mins.Add(i);
}
else if (index[i].next.val == min)
{
mins.Add(i);
}
}
}
for(int i=; i<mins.Count; i++)
{
ListNode node = new ListNode(index[mins[i]].next.val);
p.next = node;
p = node;
index[mins[i]] = index[mins[i]].next;
}
for(int i = index.Count - ; i >= ; i--)
{
if(index[i].next == null)
{
index.Remove(index[i]);
}
}
}
return res.next;
}
}
0008 合并K个排序链表的更多相关文章
- [LeetCode] 23. 合并K个排序链表
题目链接: https://leetcode-cn.com/problems/merge-k-sorted-lists/ 题目描述: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂 ...
- [Swift]LeetCode23. 合并K个排序链表 | Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- 合并K个排序链表(java实现)
题目: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: ...
- LeetCode(23):合并K个排序链表
Hard! 题目描述: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2-> ...
- LeetCode题解-23 合并K个排序链表 Hard
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-&g ...
- Leetcode题库——23.合并k个排序链表
@author: ZZQ @software: PyCharm @file: mergeKLists.py @time: 2018/10/12 19:55 说明:合并 k 个排序链表,返回合并后的排序 ...
- leetcode 23. 合并K个排序链表 JAVA
题目: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: ...
- 代码题(14)— 合并有序链表、数组、合并K个排序链表
1.21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出 ...
随机推荐
- eikonal equation - 程函方程
[转载请注明出处]http://www.cnblogs.com/mashiqi 2018/08/08 eikonal equation如下:$$|\nabla_x \tau (x)| = n(x).$ ...
- i3wm菜单
抛弃i3-dmenu-desktop吧,投入到 j4-demu-desktop 速度超快
- 使用chromebook的记录
taobao买的香港垃圾,Thinkpad 11e chromebook,评价:键盘还行吧,(比不上价格更低的Thinkpad x200,情理之中的事情),待机超强,电池健康80%,能干掉我周围的所有 ...
- [ 随手记6 ] C/C++ 形参、实参、按值传参、指针传参、引用传参
个人原创: 1. 形参:形式上的参数,一般多在函数声明.函数定义的参数上: 2. 实参:实体参数,有实际的值,在运算上被循环使用的值: 3. 按值传参:按值,就是把实际的值传给函数内部: 4. 指针传 ...
- SQL的修炼
查询所有区有多少人,从而得知一个区有多少设备. ###############################################select o2.ORG_ENDDATE as name ...
- python 编写登陆接口
#!/usr/bin/env python#_*_ coding:utf-8 _*_dic={ 'yts':{'password':'123','count':0}, 'nick':{'passwor ...
- maya模板lock工具
#lockTemple import maya.cmds as mcimport stringif mc.window('LockWin',ex=1)==1: mc.deleteUI(' ...
- c#死锁示例代码
void Main() { object obj1 = new object(); object obj2 = new object(); var t1 = new Thread(delegate(o ...
- js 父类选择前后差异
$(this).parent().prev().text(""); $(this).parent().text(""); 如果这俩个顺序调换则再使用prev() ...
- MSMQ .NET下的应用
Message Message是MSMQ的数据存储单元,我们的用户数据一般也被填充在Message的body当中,因此很重要,让我们来看一看其在.net中的体现,如图: 在图上我们可以看见,Messa ...