zoukankan      html  css  js  c++  java
  • 23. 合并K个排序链表-链表-困难

    问题描述

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

    示例:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/merge-k-sorted-lists

    解答

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    
     //遍历list放入数组,再sort生成listnode。10ms
    class Solution {
        public ListNode mergeKLists(ListNode[] lists) {
            int len = lists.length;
            if(len == 0)return null;
            List<Integer> resList = new ArrayList<Integer>();
            for(ListNode temp:lists)
                while(temp!=null){
                    resList.add(temp.val);
                    temp = temp.next;
                }
            Collections.sort(resList);
            ListNode res = new ListNode(-1), a = res;
            for(int i:resList){
                res.next = new ListNode(i);
                res = res.next;
            }
            //System.out.println(resList);
            return a.next;
        }
    }
      /*
     //以下是链表做法,280ms
    class Solution {
        public ListNode mergeKLists(ListNode[] lists) {
            int len = lists.length;
            if(len == 0)return null;
            ListNode res = new ListNode(-1), a = res, min = new ListNode(10000000);
            int position, i;
            while(true){
                position = -1;
                for(i=0;i<len;i++){
                    if(lists[i] != null && min.val >= lists[i].val){
                        min = lists[i];
                        position = i;//记录位置
                    }
                }
                if(position == -1)return a.next;
                lists[position] = min.next;
                res.next = min;
                res = res.next;
                min = new ListNode(10000000);
            }
        }
    }
    */
  • 相关阅读:
    perf-stat
    perf原理
    ubuntu中Docker的安装与使用
    NVM相关手册及新特性理解
    #2018BIT软件工程基础#结对项目:四则运算题目生成
    #2018BIT软件工程基础#个人项目:数独
    第一篇博文:自我介绍&新学期展望
    越早明白这些道理,越能少走一些弯路
    把知识连接起来就是创意
    【翻译】24款界面精美的免费UI工具包
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13352739.html
Copyright © 2011-2022 走看看