BM5 合并k个已排序的链表 javascript

描述
合并 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,
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值