zoukankan      html  css  js  c++  java
  • LeetCode 406 根据身高重建队列

    LeetCode 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]]

    排序

    • 按照身高降序排列
    • 按照排在前面比自己高的人数(k)升序排列

    执行用时:10 ms, 在所有 Java 提交中击败了55.43%的用户
    内存消耗:39.4 MB, 在所有 Java 提交中击败了84.61%的用户

    class Solution {
        public int[][] reconstructQueue(int[][] people) {
            if(people==null || people.length==0 || people[0].length==0) {
                return new int[0][0];
            }
    
            //首先排序, O(NlogN)
            Arrays.sort(people, new Comparator<int[]>(){
                public int compare(int[] o1, int[] o2) {
                    if(o1[0]!=o2[0]) {
                        return o2[0] - o1[0];  //身高高的在前
                    }
                    else {
                        return o1[1] - o2[1];  //k小的在前
                    }
                }
            });
            //System.out.println(Arrays.deepToString(people));
    
            //调整位置, O(N)
            List<int[]> ansList = new LinkedList<>();
            for(int[] tmp: people) {
                ansList.add(tmp[1], tmp);
            }
    
            return ansList.toArray(new int[0][0]);
        }
    }
    
  • 相关阅读:
    c++中的.hpp文件
    最近用vs使用的比较好的工具
    new内存分配失败
    "0x%08x" C语言
    python爬取智联招聘工作岗位信息
    GIS应用1000例01序
    lxml 中连续调用xpath出的问题
    arcgis JavaScript API总体结构
    PostgreSQL安装
    ES6转ES5的babel的使用
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13983507.html
Copyright © 2011-2022 走看看