力扣406 根据身高重建队列 Java版本

文章目录


题目描述

假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。

请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

示例 1:

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

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

解释:

编号为 0 的人身高为 5 ,没有身高更高或者相同的人排在他前面。

编号为 1 的人身高为 7 ,没有身高更高或者相同的人排在他前面。

编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。

编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。

编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。

编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。

因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。

示例 2:

输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]

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

提示:

1 <= people.length <= 2000

0 <= hi <= 106

0 <= ki < people.length

题目数据确保队列可以被重建

代码

java 复制代码
class Solution {
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people,(a,b)->{
            //如果身高相同就按照k来升序排列
            if (a[0]==b[0]){
                return a[1]-b[1];
            }
            //优先按照身高降序排列,到时候按照k来将各个人插入到队伍中的时候身高高的被挤到后面也不影响被挤走的这个人的k
            //例如:本来是[7,0][7,1],这个时候要插入一个[6,1]就会变成[7,0][6,1][7,1],队列中的[7,1]还是满足条件的,因为前面只有一个[7,0]是和他身高相同,所以这个[7,1]的k还是1
            return b[0]-a[0];
        });

        LinkedList<int[]> que = new LinkedList<>();
        //依次放到对应位置上,位置上已经有人了,原有的人就会被挤到后面
        for (int[] p:people){
            que.add(p[1],p);
        }
        return que.toArray(new int[people.length][]);
    }
}
相关推荐
mochensage1 小时前
C++信息学竞赛中常用函数的一般用法
java·c++·算法
chengooooooo1 小时前
leetcode Top100 238. 除自身以外数组的乘积|数组系列
算法·leetcode
GUIQU.1 小时前
【每日一题 | 2025年6.2 ~ 6.8】第16届蓝桥杯部分偏简单题
算法·蓝桥杯·每日一题
weixin_527550402 小时前
初级程序员入门指南
javascript·python·算法
嘉陵妹妹4 小时前
深度优先算法学习
学习·算法·深度优先
GalaxyPokemon4 小时前
LeetCode - 53. 最大子数组和
算法·leetcode·职场和发展
hn小菜鸡5 小时前
LeetCode 1356.根据数字二进制下1的数目排序
数据结构·算法·leetcode
zhuiQiuMX5 小时前
分享今天做的力扣SQL题
sql·算法·leetcode
music&movie6 小时前
算法工程师认知水平要求总结
人工智能·算法
laocui17 小时前
Σ∆ 数字滤波
人工智能·算法