当前位置:网站首页>每日一题-合并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;
}
}
边栏推荐
猜你喜欢
随机推荐
物联网:LoRa无线通信技术
LeetCode刷题之第54题
常见的 PoE 错误和解决方案
ECCV2022 | RU & Google propose zero-shot object detection with CLIP!
物联网-广域网技术之NB-IoT
Detailed explanation of BroadCast Receiver (broadcast)
【22李宏毅机器学习】课程大纲概述
MySQL主从复制—有手就能学会的MySQL集群搭建教程
framebuffer应用编程及文字显示(2)
基于STM32F407的WIFI通信(使用的是ESP8266模块)
【UiPath2022+C#】UiPath Switch
最简单的防抖节流理解法
亲身实感十多年的面试官面试的题目
【UiPath2022+C#】UiPath变量和参数
LeetCode刷题之第416题
基于STM32F407的一个温度传感器报警系统(用的是DS18B20温度传感器,4针0.96寸OLED显示屏,并且附带日期显示)
盘点关于发顶会顶刊论文,你需要知道写作上的这些事情!
【shell编程】第二章:条件测试语句
栈的应用——力扣 20.有效的括号
用GAN的方法来进行图片匹配!休斯顿大学提出用于文本图像匹配的对抗表示学习,消除模态差异!