zoukankan      html  css  js  c++  java
  • 【力扣】406. 根据身高重建队列

    假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。

    注意:
    总人数少于1100人。

    示例

    输入:
    [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

    输出:
    [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/queue-reconstruction-by-height
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    /**
         * 解题思路:先排序再插入
         * 1.排序规则:按照先H高度降序,K个数升序排序
         * 2.遍历排序后的数组,根据K插入到K的位置上
         *
         * 核心思想:高个子先站好位,矮个子插入到K位置上,前面肯定有K个高个子,矮个子再插到前面也满足K的要求
         *
         * @param people
         * @return
         */
        public int[][] reconstructQueue(int[][] people) {
            // //经过Arrays.sort排序后结果:[7,0], [7,1], [6,1], [5,0], [5,2], [4,4]
            // 再一个一个插入。
            // [7,0]
            // [7,0], [7,1]
            // [7,0], [6,1], [7,1]
            // [5,0], [7,0], [6,1], [7,1]
            // [5,0], [7,0], [5,2], [6,1], [7,1]
            // [5,0], [7,0], [5,2], [6,1], [4,4], [7,1]
            Arrays.sort(people, (o1, o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0]);
    
            LinkedList<int[]> list = new LinkedList<>();
            for (int[] i : people) {
                list.add(i[1], i);
            }
    
            return list.toArray(new int[list.size()][2]);
        }

    时间复杂度:O(n^2)

    空间复杂度:O(logn)

    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    过滤选择器——简单过滤选择器
    层次选择器
    选择器——2——基本选择器
    This is a secret
    iframe加载问题
    懒加载
    biubiubiu
    使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
    HTML中&nbsp; &ensp; &emsp; &thinsp;等6种空白空格的区别
    ASP.NET 4.0的ClientIDMode属性
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/13987091.html
Copyright © 2011-2022 走看看