力扣【23】合并K个排序链表
题目:
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例 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个排序链表相关推荐
- 力扣 23. 合并K个升序链表
题目 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1, ...
- 【LeetCode刷题】23. 合并K个排序链表
23. 合并K个排序链表 题目 思路1 - 普通思路 思路2 - 逐一比较 思路3 – 逐一两两合并 思路4 – 优先级队列(小顶堆) 思路5 – 分治策略 题目 链接:23. 合并K个排序链表 合并 ...
- LeetCode 23. 合并K个排序链表(优先队列)
文章目录 1. 题目信息 2. 思路 3. 代码 1. 题目信息 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例:输入: [1->4->5,1->3-& ...
- leetcode 23. 合并K个排序链表
题目 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1 ...
- 23. 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- LeetCode题解-23 合并K个排序链表 Hard
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4->5,1->3->4,2->6 ] 输出: 1->1->2 ...
- leetcode C++ 23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
一.思路: 第一种:求出每一个链表的最小值,然后把这个节点放到合并的结果链表里面,这个链表指向next 第二种:优先级队列,头结点放到优先级队列里面,将top的那一个放到合并的链表里面,再讲top指向 ...
- [leetcode-JavaScript]---23、合并K个排序链表
题目 合并 k 个排序链表,返回合并后的排序链表 示例: 输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4-& ...
- [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]
[问题描述]23.合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4->5,1->3->4,2->6 ] ...
- leetcode **23. 合并K个升序链表(2020.4.26)
[题目]**23. 合并K个升序链表 21.合并两个有序链表 **23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4-& ...
最新文章
- 55种网页常用小技巧
- 年运行10万台服务器数据中心方案设计公示
- python基础语法教程:行与缩进
- python自建包的根目录可以直接import的方法
- scheduled每天下午1点执行一次_在Spring Boot项目中使用@Scheduled注解实现定时任务...
- 网站使用CloudFlare
- 实现库函数strlen和strcpy
- Google Protocol Buffer
- java 银行卡号格式化_JS银行卡号格式化 - JavaScript常用效果 - Front-End - NalanXue's Blog...
- mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区
- 【java笔记】hello world入门程序
- 大学计算机基础操作题材料,《大学计算机基础》操作题
- Redis客户端连接远程Redis服务器
- VMware虚拟机安装ghost win7系统方法
- 外置硬盘一插就卡_为什么电脑一插移动硬盘就卡死了?
- 未婚同居能白头偕老吗
- CNN 入门讲解:什么是标准化?
- java 护眼背景,设置Eclipse配色方案--设置不同背景色,有效护眼
- js的tree转数组
- 显卡更新+pytorch安装
热门文章
- linux机械硬盘如何挂载,Linux下挂载机械硬盘
- Flink深度解读--附实现原理细节
- 软件测试的风险主要体现在哪里
- Redis分布式锁进化史
- 30天打造专业红客八
- Uncaught ReferenceError: jp2 is not defined,用jsonp抓取qq音乐总是说回调函数没有定义
- python调用Agora_Recording_SDK_for_Linux_FULL
- php听牌算法,打麻将要学会的听牌算法
- 开关标识一个是0一个是-那个是开哪个是关
- Grafana的Worldmap使用,添加Mysql 数据源