Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode[]} lists
* @return {ListNode}
*/
var mergeKLists = function(lists) {
var mergeTwoLists = function(l1, l2) {
var head = new ListNode(-1);
var new_list = head;
while(l1!==null&&l2!==null){
if(l1.val>l2.val){
new_list.next = l2;
l2 = l2.next;
}else{
new_list.next = l1;
l1 = l1.next;
}
new_list = new_list.next;
}
if(l1===null){
new_list.next = l2;
}
if(l2===null){
new_list.next = l1;
}
return head.next;
};
if(lists.length===0){
return null;
}
var new_list = lists[0];
for(var i=1;i<lists.length;i++){
new_list = mergeTwoLists(new_list,lists[i]);
}
return new_list;
};