合并K个升序链表

每日一练社区 2021-08-11 11:42:25

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

 

示例 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

以下程序实现了这一功能,请你填补空白处内容:


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.length == 0)
			return null;

		return merge(lists, 0, lists.length - 1);
	}

	public ListNode merge(ListNode[] lists, int low, int high) {
		if (high - low == 0)
			return lists[low];
		else if (high - low == 1)
			return mergeTwoLists(lists[low], lists[high]);
		else {
			int mid = (low + high) / 2;
			_____________________________;
			return mergeTwoLists(tmp1, tmp2);
		}
	}

	public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
		ListNode head = new ListNode();
		ListNode p = head;
		while (l1 != null && l2 != null) {
			if (l1.val > l2.val) {
				p.next = l2;
				l2 = l2.next;
				p = p.next;
			} else {
				p.next = l1;
				l1 = l1.next;
				p = p.next;
			}
		}
		if (l1 != null)
			p.next = l1;
		if (l2 != null)
			p.next = l2;
		return head.next;
	}
}
...全文
375 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
李苏苏28 2023-04-09
  • 打赏
  • 举报
回复
怎么学不会啊?
Hann Yang 2023-03-23
  • 打赏
  • 举报
回复

Python每日一练 https://edu.csdn.net/practice/23630877 中的主程序中合并的是列表,而不是链表

l = LinkList()
list1 = [[1, 4, 5], [1, 3, 4], [2, 6]]
s = Solution()
print(l.convert_list(s.mergeKLists(list1)))

中间插入链表初始化:

for i,lst in enumerate(list1):
    list1[i] = l.initList(lst)
摆烂小趴菜 2023-02-16
  • 打赏
  • 举报
回复
m0_67326698 2023-01-17
  • 打赏
  • 举报
回复
蒙的
Favor_Yang 2022-11-05
  • 打赏
  • 举报
回复
相对简单一些

11,199

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧