当前位置:网站首页>每日一题-合并K个升序链表-0722
每日一题-合并K个升序链表-0722
2022-08-05 05:17:00 【菜鸡程序媛】
题目
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
思路
- 采用归并排序的思路,先进行拆解到最小的单位,拆到不能再拆
- 然后再合并,合并成最终的链表
代码
public ListNode mergeKLists(ListNode[] lists) {
if(lists == null || lists.length <= 0)
return null;
return merge(lists, 0, lists.length - 1);
}
private ListNode merge(ListNode[] lists, int left, int right){
if(left == right)
return lists[left];
int mid = left + (right - left) / 2;
//为什么不是left,mid-1和mid,right呢,因为mid取得就是floor(value),如果-1的话,容易造出左侧越界
//拆解到最小的单位
ListNode l1 = merge(lists, left, mid);
ListNode l2 = merge(lists, mid + 1, right);
//进行合并,归并成最终的链表
return mergeTwoLists(l1, l2);
}
private ListNode mergeTwoLists(ListNode l1, ListNode l2){
if(l1 == null)
return l2;
if(l2 == null)
return l1;
if(l1.val < l2.val){
l1.next = mergeTwoLists(l1.next, l2);
return l1;
}else{
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
}
边栏推荐
- 单片机按键开发库-支持连击、长按等操作
- The University of Göttingen proposed CLIPSeg, a model that can perform three segmentation tasks at the same time
- SQL (2) - join window function view
- 物联网-广域网技术之NB-IoT
- CVPR 2022 | 70% memory savings, 2x faster training
- 【22李宏毅机器学习】课程大纲概述
- 初识机器学习
- Leetcode刷题——对链表进行插入排序
- 网管日记:故障网络交换机快速替换方法
- Comparison and summary of Tensorflow2 and Pytorch in terms of basic operations of tensor Tensor
猜你喜欢
随机推荐
网络信息安全运营方法论 (中)
对象比较
最简单的防抖节流理解法
Facial Motion Capture 调研
(C语言)计算结构体大小——结构体内存对齐
单片机按键开发库-支持连击、长按等操作
MySQL
电子产品量产工具(4)-UI系统实现
(C语言)strlen、strcpy、strcat、strcmp、strstr函数的模拟实现
LeetCode刷题之第55题
读论文-Cycle GAN
WCH系列芯片CoreMark跑分
SQL(1) - Add, delete, modify and search
LeetCode刷题之第86题
四、Web场景之静态资源配置原理
初识机器学习
常见的 PoE 错误和解决方案
【Shell编程】第一章:子串
电子产品量产工具(2)- 输入系统实现
六步搞定子网划分