其他分享
首页 > 其他分享> > 406. 根据身高重建队列

406. 根据身高重建队列

作者:互联网

描述

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

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

链接

406. 根据身高重建队列 - 力扣(LeetCode) (leetcode-cn.com)

 

解法:贪心

 1 class Solution {
 2     public int[][] reconstructQueue(int[][] people) {
 3         // 身高从大到小排(身高相同k小的站前面)
 4         Arrays.sort(people,(a,b) ->{
 5             if (a[0] == b[0]) return a[1] - b[1];
 6             return b[0] - a[0];
 7         });
 8 
 9         LinkedList<int[]> queue = new LinkedList<>();
10 
11         for (int[] p : people) {
12              queue.add(p[1], p); // 根据 p[1]的值定 p 的 插入位置
13         }
14         return queue.toArray(new int[people.length][]);
15     }
16 }

 

参考

carl

标签:return,people,队列,queue,406,int,身高
来源: https://www.cnblogs.com/oligei11/p/15740945.html