给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例 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
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if(lists.length == 0)
return null;
int sum_size = 0;
ListNode target = null;
ListNode l = null;
ListNode[] p = new ListNode[lists.length];
for(int i = 0;i < lists.length;i++){
p[i] = lists[i];
}
//找到每个数组的最小值
while(true){
int min = Integer.MAX_VALUE;
int min_index = -1; //最小值的标号
for(int i = 0;i < lists.length;i++){
if(p[i] == null)
continue;
if(min > p[i].val){
min = p[i].val;
min_index = i;
}
}
if(min_index == -1)
break;
p[min_index] = p[min_index].next;
if(target == null){
target = new ListNode(min);
l = target;
}
else{
ListNode l1 = new ListNode(min);
l.next = l1;
l = l.next;
}
}
if(l != null)
l.next = null;
return target;
}
}
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/merge-k-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。