zoukankan      html  css  js  c++  java
  • [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]]

    解析

    先排序再插入。

    如果按照第二个元素顺序排:50 70 61 71 52 44,如果实现目的,需要很多数据比较、交换。

    如果按照第一个元素倒序排:70 71 61 50 52 44,如果实现目的,只需要插入指定位置即可。

    代码

    public static int[][] reconstructQueue(int[][] people) {
            Arrays.sort(people, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {return o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0];
                }
            });
            List<int[]> list = new LinkedList<>();
            for (int[] p : people) {
                list.add(p[1], p);
            }return list.toArray(new int[list.size()][2]);
        }
  • 相关阅读:
    tomcat的安装以及环境配置
    MySQL日期/时间函数
    docker部署tomcat
    Lambda的高级查询
    Linq的使用
    多线程编程
    反射
    匿名类型
    委托和事件
    泛型特性
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/12092961.html
Copyright © 2011-2022 走看看