zoukankan      html  css  js  c++  java
  • 力扣练习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;
    }

    力扣运行结果:



  • 相关阅读:
    置换笔记
    7.23
    Conveyor Belts
    CF #134 A~D
    Blocks && Fixing the Great wall
    Kakuro
    Deadlock Detection
    关于KeyFile的破解,含注册机源代码
    BMP位图之代码实现
    BMP位图之8位位图(三)
  • 原文地址:https://www.cnblogs.com/sniffs/p/12518309.html
Copyright © 2011-2022 走看看