Thanks for the solution!

Here is the updated solution after question change from List to Array,

class Solution { public ListNode mergeKLists(ListNode[] lists) { if (lists.length == 0) return null; if (lists.length == 1) return lists[0]; if (lists.length == 2) return mergeTwoLists(lists[0], lists[1]); return mergeTwoLists(mergeKLists(Arrays.copyOfRange(lists, 0, lists.length/2)), mergeKLists(Arrays.copyOfRange(lists, lists.length/2, lists.length))); } private ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) return l2; if (l2 == null) return l1; if (l1.val < l2.val) { l1.next = mergeTwoLists(l1.next, l2); return l1; } else { l2.next = mergeTwoLists(l1, l2.next); return l2; } } }