K ordered merge list. That is the subject of the meaning of problems, examples,
Example:
Input: [ 1->4->5, 1->3->4, 2->6 ] Output: 1->1->2->3->4->4->5->6
Optimal solution to this problem should be solved but as a priority queue PQ JS achieve too much trouble, so I am here to give sub-optimal solution, with 21. Merge Two Sorted Lists idea of divide and conquer to do.
Time O (nlogk) - k is the number of list
Space O (n)
1 /** 2 * @param {ListNode[]} lists 3 * @return {ListNode} 4 */ 5 var mergeKLists = function (lists) { 6 return divide(lists, 0, lists.length - 1); 7 }; 8 9 var divide = function (lists, start, end) { 10 if (start === end) { 11 return lists[start]; 12 } else if (start < end) { 13 const mid = parseInt(start + (end - start) / 2); 14 const left = divide(lists, start, mid); 15 const right = divide(lists, mid + 1, end); 16 return merge(left, right); 17 } else { 18 return null; 19 } 20 } 21 22 var merge = function (left, right) { 23 if (!left) { 24 return right; 25 } else if (!right) { 26 return left; 27 } else if (left.val < right.val) { 28 left.next = merge(left.next, right); 29 return left; 30 } else { 31 right.next = merge(left, right.next); 32 return right; 33 } 34 }