🚀 算法题 🚀 |
🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯
🚀 算法题 🚀 |
🍔 目录
- 🚩 题目链接
- ⛲ 题目描述
- 🌟 求解思路&实现代码&运行结果
- ⚡ 链表 + 归并 + 递归
- 🥦 求解思路
- 🥦 实现代码
- 🥦 运行结果
- 💬 共勉
🚩 题目链接
- 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 = [[]]
输出:[]
提示:
k == lists.length
0 <= k <= 10^4
0 <= lists[i].length <= 500
-10^4 <= lists[i][j] <= 10^4
lists[i] 按 升序 排列
lists[i].length 的总和不超过 10^4
🌟 求解思路&实现代码&运行结果
⚡ 链表 + 归并 + 递归
🥦 求解思路
- 该题目是合并俩个链表的升级版本,区别之处在于本题是多个链表,那我们该怎么求解呢?
- 首先,合并的思想还是没有改变,同时遍历俩个链表,更小的元素先行合并,遍历结束,最后判断,如果某一个不为null,直接加到当前链表的末尾。
- 需要加入的是归并的思想,每次对我们的链表集合进行拆分,然后进行合并,得到最后总的链表并返回。
- 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
/**
* 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) {
if (lists == null || lists.length <= 0)
return null;
return devideLists(lists, 0, lists.length - 1);
}
public ListNode devideLists(ListNode[] lists, int left, int right) {
if (left > right) {
return null;
}
if (left == right) {
return lists[left];
}
int mid = left + right >> 1;
return merge(devideLists(lists, left, mid), devideLists(lists, mid + 1, right));
}
public ListNode merge(ListNode p1, ListNode p2) {
if (p1 == null)
return p2;
if (p2 == null)
return p1;
ListNode head = new ListNode(0);
ListNode cur = head;
while (p1 != null && p2 != null) {
if (p1.val <= p2.val) {
cur.next = p1;
p1 = p1.next;
} else {
cur.next = p2;
p2 = p2.next;
}
cur = cur.next;
}
if (p1 == null) {
cur.next = p2;
} else {
cur.next = p1;
}
return head.next;
}
}
🥦 运行结果
💬 共勉
最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉! |