leetcode-23. 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6
解题思路:直接引用21题的合并两个有序链表,然后利用for循环循环调用mergeTwoLists,直到全部合并
//21. 合并两个有序链表
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null) {
return l2;
}if(l2 == null) {
return l1;
}
ListNode res;
if(l1.val < l2.val) {
res = l1;
res.next = mergeTwoLists(l1.next, l2);
} else {
res = l2;
res.next = mergeTwoLists(l2.next, l1);
}
return res;
}
//23. 合并K个排序链表
public ListNode mergeKLists(ListNode[] lists) {
if(lists.length == 0) {
return null;
}
// 下面的if语句判断不是必须
if(lists.length == 1) {
return lists[0];
}
ListNode dummyNode = null;
for (int i = 0; i < lists.length; i++) {
dummyNode = mergeTwoLists(dummyNode,lists[i]);
}
return dummyNode;
}