当前位置:网站首页>24. 合并K个升序链表
24. 合并K个升序链表
2022-07-21 18:06:00 【小开心】
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 = [[]]
输出:[]
分治算法
1:分治,先将K个链表分成两个部分,先合并两个部分,在合并这两个部分返回的链表。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
ListNode ans = null;
for(int i=0;i<lists.length;i++){
ans = merge(ans,lists[i]);
}
return ans;
}
public ListNode merge(ListNode a,ListNode b){
if(a==null||b==null){
return a!=null?a:b;
}
ListNode head = new ListNode(0);
ListNode tail = head,p = a,q =b;
while(p!=null&&q!=null){
if(p.val>=q.val){
ListNode c = new ListNode(q.val);
tail.next = c;
tail = c;
q = q.next;
}
else{
ListNode c = new ListNode(p.val);
tail.next = c;
tail = c;
p = p.next;
}
}
if(p!=null) tail.next = p;
if(q!=null) tail.next = q;
return head.next;
}
}
边栏推荐
- Hyperloglog of redis principle
- 元组、列表、集合,异常处理的一些小笔记
- 关于线程 thread (1)概念简介
- EAS BOS 报表开发
- High frequency leetcode deep search part: 297 Serialization and deserialization of binary tree
- Three implementation methods of Kingdee EAS unpacking deployment
- Responsive layout viewport and common units
- EAS BOS开发环境客户端启不起来,但是服务端确显示准备就绪
- 二维数组的使用(包括二维数组的定义,二维数组的声明和初始化(动态初始化,静态初始化),二位数组的常见赋值方法(动态初始化,静态初始化的赋值),错误的定义赋值方法等)
- vector 基础
猜你喜欢
EAS Web 页面预览报错界面显示空白
嵌入式之网络接口方案介绍与驱动调试方式总结
[Datasheet PHY] ksz8081数据手册解读
performance 优化
Three implementation methods of Kingdee EAS unpacking deployment
EAS 环境结构目录
flex布局的常用属性
EAS Web BIM Start Access prompt 500 Error
Nchw converted to nhwc
How much do you know about the benefits of encouraging enterprise knowledge sharing?
随机推荐
EAS BOS 序时簿动态列的实现
[Datasheet PHY] ksz8081数据手册解读
PyCharm 安装适用指南
uni拦截器
When packaged in the form of build patches, the client cannot load metadata.
TSP(不要怕)动态规划(我这里很友好)
oracle错误一览表
EAS Web BIM启动访问提示500错误
排序方法--冒泡排序(使用数组实现一串数字的从大到小或从小到大排序)
以构建补丁形式打包时,客户端加载不到元数据。
Error in metadata publishing after EAS version upgrade
30.重排链表
EAS BOS report development
Gluttonous snake
关于线程 thread (2)线程的使用简介
文字超出部分变成省略号的三种方式
知识分享|分享一些提升企业文档管理水平的方法
生物化学复习VI·生物氧化
EAS 登录界面修改
微信小程序自适应性的自定义导航栏开发