合并 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个排序链表的更多相关文章

  1. [LeetCode] 23. 合并K个排序链表

    题目链接: https://leetcode-cn.com/problems/merge-k-sorted-lists/ 题目描述: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂 ...

  2. [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 ...

  3. 合并K个排序链表

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: 1-&g ...

  4. 合并K个排序链表(java实现)

    题目: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: ...

  5. LeetCode(23):合并K个排序链表

    Hard! 题目描述: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2-> ...

  6. LeetCode题解-23 合并K个排序链表 Hard

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-&g ...

  7. Leetcode题库——23.合并k个排序链表

    @author: ZZQ @software: PyCharm @file: mergeKLists.py @time: 2018/10/12 19:55 说明:合并 k 个排序链表,返回合并后的排序 ...

  8. leetcode 23. 合并K个排序链表 JAVA

    题目: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: ...

  9. 代码题(14)— 合并有序链表、数组、合并K个排序链表

    1.21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出 ...

随机推荐

  1. 奇偶个数-java

    题目内容: 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据.程序输出读到的数据中的奇数和偶数的个数. 输入格式: 一系列正整数,整数的范围是(0,100000).如果输入 ...

  2. HDU - 6127: Hard challenge(扫描线,atan)

    pro:给定N个二维平面的关键点,保证两点连线不经过原点.现在让你安排一条经过原点,但是不经过关键点的直线,使得两边的和的乘积最大. sol:由于连线不经过原点,所以我们极角排序即可. 具体:因为我们 ...

  3. 20155219 付颖卓《基于ARM试验箱的接口应用于测试》课程设计个人报告

    一.个人贡献 参与课设题目讨论及完成全过程: 资料收集: 负责代码调试: 修改小组结题报告: 负责试验箱的管理: 二.设计中遇到的问题及解决方法 1.makefile无法完成编译.如下图: 答:重新下 ...

  4. XAF创建一个DashBoard

    1.首先启动windows程序之后点击DashBoard导航栏 2.接着点击新建按钮,开始创建一个DashBoard 3.接着根据你的数据来源选择数据源,这里我选择了数据库 4.接着填好你的服务器和数 ...

  5. c指针存放的是常量的地址

    ''' #include <stdio.h> int main(){    int b = 1;    int c = 2;    int* a = &b;    printf(& ...

  6. SpringBoot使用Druid数据库加密链接完整方案

    网上的坑 springboot 使用 Druid 数据库加密链接方案,不建议采用网上的一篇文章<springboot 结合 Druid 加密数据库密码遇到的坑!>介绍的方式来进行加密链接实 ...

  7. uva 202

    #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> # ...

  8. 《python for data analysis》第四章,numpy的基本使用

    <利用python进行数据分析>第四章的程序,介绍了numpy的基本使用方法.(第三章为Ipython的基本使用) 科学计算.常用函数.数组处理.线性代数运算.随机模块…… # -*- c ...

  9. 网络请求 selenium

    网络请求 selenium 部分流程: 第一:爬虫引擎生成requests请求,送往scheduler调度模块,进入等待队列,等待调度.第二:scheduler模块开始调度这些requests,出队, ...

  10. LEB128相关知识

    LEB128相关知识 介绍 LEB128(little endian base 128)是一种变长的整数压缩编码形式,它是出自于DWARF debug file format.在Android的Dal ...