【LeetCode】【HOT】23. 合并K个升序链表(递归+分治)
【LeetCode】【HOT】23. 合并K个升序链表
文章目录
- 【LeetCode】【HOT】23. 合并K个升序链表
package hot;import java.util.Arrays;class ListNode{int val;ListNode next;ListNode(int val){this.val = val;}
}public class Solution23 {public static void main(String[] args) {ListNode[] lists = new ListNode[3];ListNode a1 = new ListNode(1);ListNode a2 = new ListNode(4);ListNode a3 = new ListNode(5);ListNode b1 = new ListNode(1);ListNode b2 = new ListNode(3);ListNode b3 = new ListNode(4);ListNode c1 = new ListNode(2);ListNode c2 = new ListNode(6);a1.next = a2;a2.next = a3;b1.next = b2;b2.next = b3;c1.next = c2;lists[0] = a1;lists[1] = b1;lists[2] = c1;Solution23 solution = new Solution23();int[] res = new int[8];ListNode head = solution.method(lists);for(int i = 0; i < 8; i++){res[i] = head.val;head = head.next;}System.out.println(Arrays.toString(res));}private ListNode method(ListNode[] lists){return merge(lists, 0, lists.length - 1);}private ListNode merge(ListNode[] lists, int l, int r){if(l > r){return null;}if(l == r){return lists[l];}int mid = (l+r) / 2;return recur(merge(lists, l, mid), merge(lists, mid+1, r));}private ListNode recur(ListNode l1, ListNode l2){if(l1 == null){return l2;}else if(l2 == null){return l1;}else if(l1.val < l2.val){l1.next = recur(l1.next, l2);return l1;}else{l2.next = recur(l1,l2.next);return l2;}}
}//时间复杂度为 O(nlogn)
//空间复杂度为 O(logn)
【LeetCode】【HOT】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个升序链表24两两交换链表中的节点
维护不易,点赞再看,感谢支持 合并K个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 1: 输入:lists = [[1 ...
- 82. Leetcode 23. 合并K个升序链表 (排序)
给你一个链表数组,每个链表都已经按升序排列.请你将所有链表合并到一个升序链表中,返回合并后的链表.示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3 ...
- Leetcode 23 合并k个升序链表 (每日一题 20210722)
给你一个链表数组,每个链表都已经按升序排列.请你将所有链表合并到一个升序链表中,返回合并后的链表.示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3 ...
- 力扣 23. 合并K个升序链表
题目 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1, ...
- LeetCode题解-23 合并K个排序链表 Hard
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4->5,1->3->4,2->6 ] 输出: 1->1->2 ...
- 小黑麦当劳坚韧leetcode之旅:23. 合并K个升序链表
小黑答案 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): ...
- LeetCode 23 合并K个升序链表
https://leetcode-cn.com/problems/merge-k-sorted-lists/ 解决方案 import java.util.Comparator; import java ...
最新文章
- cocos2dx中的用户数据的管理
- ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集...
- DBCC命令2:状态查询
- LED显示驱动(三):显示驱动底层学习小结
- 进阶项目(4)蜂鸣器程序设计讲解
- Python实现词云图的3种方式(词频,一段文本,自定义样式)
- CADD课程学习(8)-- 化合物库虚拟筛选(Virtual Screening)
- FFmpeg基础:视频流转图片
- Codeforces Round #507 (Div. 2) B - Shashlik Cooking(模拟)
- 关于形而上学与形而下学之区别及关系
- 西门子200SMART(七)交叉引用
- 【线上活动】中秋诗词接龙!
- 销售订单退货原因对应的快码
- 盘点大厂的那些开源项目 - 滴滴出行
- 喵喵咪鼠标自动点击器使用说明
- 数据库常用的sql语句汇总
- Python程序员的自我修养
- 计算机网页设计论文加成品,计算机网页设计教学研究论文
- ps2摇杆android图形编程,ROC-RK3308-CC开发实例总结--PS2 Joystick摇杆模块
- CCV1.5 屏幕校正点删减调节