leetcode-23. 合并K个排序链表

合并 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

示例:

输入:
[
  1->4->5,
  1->3->4,
  2->6
]
输出: 1->1->2->3->4->4->5->6

解题思路:直接引用21题的合并两个有序链表,然后利用for循环循环调用mergeTwoLists,直到全部合并

//21. 合并两个有序链表
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null) {
            return l2;
        }if(l2 == null) {
            return l1;
        }

        ListNode res;
        if(l1.val < l2.val) {
            res = l1;
            res.next = mergeTwoLists(l1.next, l2);
        } else {
            res = l2;
            res.next = mergeTwoLists(l2.next, l1);
        }

        return res;
    }

    //23. 合并K个排序链表
    public ListNode mergeKLists(ListNode[] lists) {
        if(lists.length == 0) {
            return null;
        }
        // 下面的if语句判断不是必须
        if(lists.length == 1) {
            return lists[0];
        }

        ListNode dummyNode = null;
        for (int i = 0; i < lists.length; i++) {
            dummyNode = mergeTwoLists(dummyNode,lists[i]);
        }
        return dummyNode;
    }

 

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务