题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param lists ListNode类一维数组
* @return ListNode类
*/
function mergeKLists( lists ) {
// write code here
if(lists.length === 0) {
return null
}
if(lists.length === 1) {
return lists[0]
}
const result = []
for( let i=0; i<lists.length-1; i+=2) {
result.push(nodeSort(lists[i],lists[i+1]))
}
if(lists.length %2 !== 0 ) {
result.push(lists[lists.length-1])
}
return mergeKLists(result)
}
function nodeSort (head1,head2) {
let p = new ListNode(1)
let pNode = p
let p1 = head1
let p2 = head2
while (p1 && p2) {
if(p1.val <= p2.val) {
p.next = p1
p1 = p1.next
}
else {
p.next = p2
p2 = p2.next
}
p = p.next
}
if (p1) {
p.next = p1
}
if (p2) {
p.next = p2
}
return pNode.next
}
module.exports = {
mergeKLists : mergeKLists
};

