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

文章目录


题目描述

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

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

示例 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][]);
    }
}
相关推荐
wabs66612 小时前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
hetao173383712 小时前
2026-09-08 hetao1733837 的刷题记录
c++·算法
C++ 老炮儿的技术栈13 小时前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
weixin_4462608513 小时前
CABAL:用于追踪同行评审中合谋投标影响的多智能体仿真框架
人工智能·算法·机器学习
不会就选b13 小时前
算法日常・每日刷题--<贪心>6
数据结构·算法·leetcode
青山木13 小时前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法
Tisfy13 小时前
LeetCode 3870.统计范围内的逗号:模拟 或 一步计算
数学·算法·leetcode·题解·模拟·遍历
明月_清风13 小时前
字符串匹配四大经典算法:BF、RK、BM、KMP 到底有什么区别?
后端·算法
明月_清风14 小时前
多模式字符串匹配:Trie 与 AC 自动机
后端·算法
木井巳14 小时前
【BFS/DFS 解决 FloodFill 算法】衣橱整理
java·算法·leetcode·深度优先·广度优先·宽度优先