题解 | #5.合并k个已排序的链表#
合并k个已排序的链表
http://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
每两个一组合并有序链表,将结果覆盖原数组,同时更改数组长度,直至数组长度为1
function merge(h1,h2){
let empty = {};
let pre = empty;
while(h1!=null && h2!=null){
if(h1.val<h2.val){
pre.next = h1;
h1 = h1.next;
}else{
pre.next = h2;
h2 = h2.next;
}
pre = pre.next;
}
pre.next = h1!=null ? h1 : h2;
return empty.next;
}
function mergeKLists(lists) {
while(lists.length > 1){
let index = 0;
for(let i=0; i<lists.length; i+=2){
lists[index++] = merge(lists[i],lists[i+1] || null);
}
lists.length = index;
}
return lists[0];
}