合并k个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param lists ListNode类一维数组
* @return ListNode类
*/
function mergeKLists( lists ) {
// write code here
var result = lists[0]
if(lists.length>=2){
for(var i=1;i<lists.length;i++){
result = mergeTwoLists(result,lists[i])
}
}
return result
}
function mergeTwoLists( l1 , l2 ) {
// write code here
if(l1 == null) { return l2 }
if(l2 == null) { return l1 }
var head={}
var current = head
while(l1&&l2){
if(l1.val<l2.val){
current.next = l1
current = current.next
l1 = l1.next
}else{
current.next = l2
current = current.next
l2 = l2.next
}
}
while(l1){
current.next =l1
current = current.next
l1=l1.next
}
while(l2){
current.next =l2
current = current.next
l2=l2.next
}
return head.next
}
module.exports = {
mergeTwoLists : mergeTwoLists,
mergeKLists : mergeKLists
};