力扣练习008---合并K个排序链表(23)

题目描述:

https://leetcode-cn.com/problems/merge-k-sorted-lists/

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

示例:

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

题目分析:

直接将所有链表遍历,存放到list中,然后排序,然后再构造节点;该解法的性能瓶颈在于使用什么排序算法

分治算法啥的,直接不写了,烦躁

Java代码:

// 暴力解法, 将所有数据存入list, 排序后, 创建ListNode
public ListNode mergeKLists1(ListNode[] lists) {
    List<Integer> valList = new ArrayList<>();
    for (ListNode listNode : lists) {
        ListNode curNode = listNode;
        while (curNode != null) {
            valList.add(curNode.val);
            curNode = curNode.next;
        }
    }

    if (valList.isEmpty()) {
        return null;
    }

    Collections.sort(valList);
    ListNode newNode = new ListNode(valList.get(0));
    ListNode tmpNode = newNode;
    for (int i = 1; i < valList.size(); i++) {
        ListNode node = new ListNode(valList.get(i));
        tmpNode.next = node;
        tmpNode = node;
    }

    return newNode;
}

力扣运行结果:



原文地址:https://www.cnblogs.com/sniffs/p/12518309.html