Leetcode--23.合并K个排序链表(Java)
合并 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 {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
int n = lists.length;
if(n<1) return null;
if(n==1) return lists[0];
while(n>1){
int i;
for(i=0;i<n/2;i++){
lists[i] = mergeTwoLists(lists[i*2],lists[2*i+1]);
}
if(n%2==1){
lists[i] = lists[n-1];
n++;
}
n/=2;
}
return lists[0];
}
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode p = l1,q = l2;
int t=0;
ListNode result = new ListNode(0);
ListNode x = result;
while(p!=null||q!=null)
{
x.next = new ListNode(0);
x = x.next;
if(p!=null&&q!=null)
{
if(p.val<=q.val)
{
x.val = p.val;
p = p.next;
}
else
{
x.val = q.val;
q = q.next;
}
}
else if(p!=null)
{
x.val = p.val;
p = p.next;
}
else
{
x.val = q.val;
q = q.next;
}
}
return result.next;
}
}
Leetcode--23.合并K个排序链表(Java)相关推荐
- 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 ...
- 【LeetCode刷题】23. 合并K个排序链表
23. 合并K个排序链表 题目 思路1 - 普通思路 思路2 - 逐一比较 思路3 – 逐一两两合并 思路4 – 优先级队列(小顶堆) 思路5 – 分治策略 题目 链接:23. 合并K个排序链表 合并 ...
- [分治] leetcode 23 合并K个升序链表
[分治] leetcode 23 合并K个升序链表 1.题目 题目链接 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例1: 输入:lists ...
- leetcode **23. 合并K个升序链表(2020.4.26)
[题目]**23. 合并K个升序链表 21.合并两个有序链表 **23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4-& ...
- LeetCode题解-23 合并K个排序链表 Hard
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4->5,1->3->4,2->6 ] 输出: 1->1->2 ...
- 23. 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- LeetCode 23合并K个升序链表24两两交换链表中的节点
维护不易,点赞再看,感谢支持 合并K个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 1: 输入:lists = [[1 ...
- 优先队列之Leetcode 23合并K个有序链表
优先队列要点复习 这在之前专门写过一篇文章讲优先队列的使用方法: 优先队列的优先级设置法 对于优先队列,我们首先需要知道,它的底层是堆,或者说优先队列是堆的一种别称.堆自然就分成了两个方向: 大顶堆 ...
- 82. Leetcode 23. 合并K个升序链表 (排序)
给你一个链表数组,每个链表都已经按升序排列.请你将所有链表合并到一个升序链表中,返回合并后的链表.示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3 ...
最新文章
- 查单个值用什么resultset_视光门诊日记—为什么两个医院查的视力不一样
- 想成为嵌入式程序员应知道的0x10个基本问题
- 计算机与外部设备通讯的接口,总线接口与计算机通信(四)USB外部总线(初级认识)...
- NameError: name ‘__file__‘ is not defined的问题原因及解决方法
- this指向_前端必须知道的this指向问题
- linux环境systwm.img解包,[教程] system.img解包打包的方法,方便菜鸟们制作直刷ROM...
- java中阻止类的继承
- java web个人博客开发(一需求获取和需求分析文档)
- Arping协议以及使用方法
- 软件测试bug文章,软件测试技术之说一个让你印象最深的bug?
- 调用getParameterValues(String name)获取表单的信息
- 最科学 最舒服 【色彩搭配】 平面设计师必备
- shell间接变量引用两种方式
- python解释器中help的用法
- python定义一个字符串变量_python基础入门语法和变量类型(一)
- 互联网公司那些价值观-阿里巴巴
- 获得屏幕的宽度和高度
- android 各国时区
- 奢侈品行业数字化也要保持优雅
- RSA解密失败:javax.crypto.BadPaddingException : Decryption error
热门文章
- 01.神经网络和深度学习 W1.深度学习概论
- 数据结构--位图 BitMap
- win10win键无反应_台式电脑开机主机没反应怎么办 电脑开机主机没反应解决【详解】...
- 9.数据库中的子查询
- oracle自增自删分区的脚本,oracle实现自增方法(错误ora-04098解决)
- java执行程序默认多线程吗_Java多线程 执行程序(1)
- 快手搜索技术部招聘NLP算法工程师!
- 美团客户端响应式框架 EasyReact 开源啦
- Hades:移动端静态分析框架
- 论文浅尝 | 知识图谱相关实体搜索