归并方法求解:
public static ListNode mergeKLists(ListNode[] lists){
return partion(lists,0,lists.length-1);
}
public static ListNode partion(ListNode[] lists,int s,int e){
if(s==e) return lists[s];
if(s<e){
int q=(s+e)/2;
ListNode l1=partion(lists,s,q);
ListNode l2=partion(lists,q+1,e);
return merge(l1,l2);
}else
return null;
}
merge用于连接两个lists,返回值为ListNode。
采取分治策略,使用递归完成。
比如 lists.length=12 的情况
0-5一组 6-11一组
0-2 3-5 6-8 9-11
0-1 2 3-4 5 6-7 8 9-10 11