描述
合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。
数据范围:节点总数 0 \le n \le 50000≤n≤5000,每个节点的val满足 |val| <= 1000∣val∣<=1000
要求:时间复杂度 O(nlogn)O(nlogn)
import java.util.*;
public class Solution {
public ListNode mergeKLists(ArrayList<ListNode> lists) {
return mergeList(lists,0,lists.size()-1);
}
public ListNode mergeList(ArrayList<ListNode> lists,int left, int right){
if(left==right) return lists.get(left);
if(left>right) return null;
int mid =left +(right - left)/2;
return merge(mergeList(lists,left,mid),mergeList(lists,mid+1,right));
}
public 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;
}
}
}