题目:

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

示例 1:

输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
解释:链表数组如下:
[
  1->4->5,
  1->3->4,
  2->6
]
将它们合并到一个有序链表中得到。
1->1->2->3->4->4->5->6
示例 2:

输入:lists = []
输出:[]
示例 3:

输入:lists = [[]]
输出:[]

题解:

类似力扣【21】合并两个有序链表。

package test;
class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}
class Solution {public ListNode mergeKLists(ListNode[] lists) {int k = lists.length;ListNode Head = new ListNode(0);ListNode p = Head;while (true) {ListNode minNode = null;//必须放在for循环外面int minPointer = -1;//minnode和minpointer用的不熟for (int i = 0; i < k; i++) {//在三个链表中找第一个最小的节点if (lists[i] == null) {//第i个链表为空了,继续continue;//这个continue用的好,如果三个都为null,则直接跳到minPointer == -1,就结束循环了}if (minNode == null || lists[i].val < minNode.val) {minNode = lists[i];minPointer = i;//minPointer是只三个链表头部最小的那个}}if (minPointer == -1) {break;}p.next = minNode;p = p.next;lists[minPointer] = lists[minPointer].next;//是为了从第一个链表的1移动到4,因为1循环下来最小了,所以他的下一个可能也是最小}return Head.next;}
}public class Main{public static void main (String []args){ListNode l1 = new ListNode(1);//@466ListNode l2 = new ListNode(4);//@467ListNode l3 = new ListNode(5);//@468ListNode q1 = new ListNode(1);//@469ListNode q2 = new ListNode(3);//@470ListNode q3 = new ListNode(4);//@471ListNode r1 = new ListNode(2);//@472ListNode r2 = new ListNode(6);//@473ListNode[] l = new ListNode[]{l1, q1, r1};//@474l1.next = l2;l2.next = l3;q1.next = q2;q2.next = q3;r1.next = r2;Solution p = new Solution();ListNode b = p.mergeKLists(l);while (b != null){System.out.print("->"+b.val);b = b.next;}}
}

力扣【23】合并K个排序链表相关推荐

  1. 力扣 23. 合并K个升序链表

    题目 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1, ...

  2. 【LeetCode刷题】23. 合并K个排序链表

    23. 合并K个排序链表 题目 思路1 - 普通思路 思路2 - 逐一比较 思路3 – 逐一两两合并 思路4 – 优先级队列(小顶堆) 思路5 – 分治策略 题目 链接:23. 合并K个排序链表 合并 ...

  3. LeetCode 23. 合并K个排序链表(优先队列)

    文章目录 1. 题目信息 2. 思路 3. 代码 1. 题目信息 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例:输入: [1->4->5,1->3-& ...

  4. leetcode 23. 合并K个排序链表

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

  5. 23. 合并K个排序链表

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

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

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

  7. leetcode C++ 23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

    一.思路: 第一种:求出每一个链表的最小值,然后把这个节点放到合并的结果链表里面,这个链表指向next 第二种:优先级队列,头结点放到优先级队列里面,将top的那一个放到合并的链表里面,再讲top指向 ...

  8. [leetcode-JavaScript]---23、合并K个排序链表

    题目 合并 k 个排序链表,返回合并后的排序链表 示例: 输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4-& ...

  9. [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]

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

  10. leetcode **23. 合并K个升序链表(2020.4.26)

    [题目]**23. 合并K个升序链表 21.合并两个有序链表 **23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4-& ...

最新文章

  1. 55种网页常用小技巧
  2. 年运行10万台服务器数据中心方案设计公示
  3. python基础语法教程:行与缩进
  4. python自建包的根目录可以直接import的方法
  5. scheduled每天下午1点执行一次_在Spring Boot项目中使用@Scheduled注解实现定时任务...
  6. 网站使用CloudFlare
  7. 实现库函数strlen和strcpy
  8. Google Protocol Buffer
  9. java 银行卡号格式化_JS银行卡号格式化 - JavaScript常用效果 - Front-End - NalanXue's Blog...
  10. mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区
  11. 【java笔记】hello world入门程序
  12. 大学计算机基础操作题材料,《大学计算机基础》操作题
  13. Redis客户端连接远程Redis服务器
  14. VMware虚拟机安装ghost win7系统方法
  15. 外置硬盘一插就卡_为什么电脑一插移动硬盘就卡死了?
  16. 未婚同居能白头偕老吗
  17. CNN 入门讲解:什么是标准化?
  18. java 护眼背景,设置Eclipse配色方案--设置不同背景色,有效护眼
  19. js的tree转数组
  20. 显卡更新+pytorch安装

热门文章

  1. linux机械硬盘如何挂载,Linux下挂载机械硬盘
  2. Flink深度解读--附实现原理细节
  3. 软件测试的风险主要体现在哪里
  4. Redis分布式锁进化史
  5. 30天打造专业红客八
  6. Uncaught ReferenceError: jp2 is not defined,用jsonp抓取qq音乐总是说回调函数没有定义
  7. python调用Agora_Recording_SDK_for_Linux_FULL
  8. php听牌算法,打麻将要学会的听牌算法
  9. 开关标识一个是0一个是-那个是开哪个是关
  10. Grafana的Worldmap使用,添加Mysql 数据源