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

    题目链接

    406. 根据身高重建队列

    题目思路

    这个题给了我们一个二维数组,第二维的含义有两个:

    • i个人的身高。
    • 在队列中,第i个人前面有arr[i][1]个人的身高大于或等于自己。

    那么这个有点像那个广告牌的做法。首先我们先将数组进行排序,排序规则如下:

    • 如果两者身高相等,那就按照大于或等于自己身高的人的数量进行升序排序。
    • 否则按照身高降序排序。

    然后我们利用一个List来插入数据。
    插入规则是按照arr[i][1]作为插入坐标,进行插入。
    因为我们在插入数据的过程中,按照身高降序插入。当我们遇到第i个人的时候,他已经是当前剩余人数中最高的那一个了。那么我们在List中的第arr[i][1]个位置插入这个人,就可以确保这个人在队列中前面身高大于或等于自己的的数据是正确的。

    代码实现

    class Solution {
        public int[][] reconstructQueue(int[][] people) {
            Arrays.sort(people, (o1, o2) -> {
                return o1[0] == o2[0]? o1[1] - o2[1] : o2[0] - o1[0];
            });
            List<int[]> list = new ArrayList<>();
            for(int[] x : people){
                list.add(x[1], x);
            }
            int[][] res = new int[people.length][2];
            for(int i = 0; i < list.size(); i++){
                res[i] = list.get(i);
            }
            return res;
        }
    }
    
  • 相关阅读:
    php 元字符与转义
    php内置函数
    php系统常量
    WPF 批量修改控件属性
    对实体属性值赋值(DATASET转list)
    WPF 进度条实现
    WPF 异步刷新主界面
    c# 依赖注入Export ImportMany
    Oracle 正则匹配实现字符拆分
    Oracle 获取表对应列信息和索引信息
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13985787.html
Copyright © 2011-2022 走看看