描述
合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。
数据范围:
示例1
输入:
[{1,2,3},{4,5,6,7}]
返回值:
{1,2,3,4,5,6,7}
示例2
输入:
[{1,2},{1,4,5},{6}]
返回值:
{1,1,2,4,5,6}
解题思路
利用两个单链表合并成一个有序链表的方法,先将数组前两个链表进行合并,将合并后的链表返回,然后再与下一个链表进行合并
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param lists ListNode类一维数组
* @return ListNode类
*/
function mergeKLists(lists) {
if(lists.length === 1){
return lists[0]
}
// write code here
// let list,list2,list1
let list = lists[0]
for (let i = 0; i < lists.length - 1; i++) {
list = Merge(list,lists[i+1])
// if(i === 0){
// list1 = lists[i];
// list2 = lists[i+1];
// // list2 = list1.next
// list = Merge(list1, list2);
// // return list
// }else{
// list1 = list
// console.log(list)
// list2 = lists[i+1]
// list = Merge(list, list2)
// // return list
// }
}
return list
}
function Merge(list1, list2) {
if (list1 === null) return list2;
if (list2 === null) return list1;
if (list1.val < list2.val) {
list1.next = Merge(list1.next, list2);
return list1;
// console.log('list1',list1)
} else {
list2.next = Merge(list1, list2.next);
return list2;
}
}
module.exports = {
mergeKLists: mergeKLists,
};