题目描述
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
样例
Example:
Input: [ 1->4->5, 1->3->4, 2->6 ] Output: 1->1->2->3->4->4->5->6
思路分析
思路可借鉴 leetcode刷题之旅(21) Merge Two Sorted Lists
利用判断,递归将k个链表的合并转换为2个链表的合并
代码
public ListNode mergeKLists(ListNode[] lists) {
return partion(lists, 0, lists.length-1) ;
}
public static ListNode partion(ListNode[] lists, int start, int len){
if (start == len) {
return lists;
}
if (start < len) {
int mid = (start+len)/2;
ListNode l1 = partion(lists, start, mid);
ListNode l2 = partion(lists, mid+1, len);
return merge(l1, l2);
}
else {
return null;
}
}
public static ListNode merge(ListNode l1,ListNode l2){
if(l1==null) return l2;
if(l2==null) return l1;
if(l1.val<l2.val){
l1.next=merge(l1.next,l2);
return l1;
}else{
l2.next=merge(l1,l2.next);
return l2;
}
}
结果