生产备案号怎么查询网站,比较高端的网页,工作总结2023最新完整版,房产网站建设方案项目书题目描述#xff1a; 假设有打乱顺序的一群人站成一个队列#xff0c;数组 people 表示队列中一些人的属性#xff08;不一定按顺序#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi #xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造… 题目描述 假设有打乱顺序的一群人站成一个队列数组 people 表示队列中一些人的属性不一定按顺序。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi 前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue 其中 queue[j] [hj, kj] 是队列中第 j 个人的属性queue[0] 是排在队列前面的人。 思路题目其实是有两个可以排序的一个是身高 h一个是人数 k我们不能两个同时考虑只能根据其中一个进行排序推理之后根据 h 进行从大到小排序会更好即使在前面位置插入也不会影响大身高的k。 排序将people二维数组根据 h 进行从大到小排序当h相同选择k大的在前面插入遍历排序后的数组根据 k 插入到res列表的第 k 个位置。 代码实现 class Solution {public int[][] reconstructQueue(int[][] people) {Listint[] res new LinkedListint[]();// 将二维数组 people 按照 h从大到小进行排序Arrays.sort(people, (x,y) - x[0]y[0] ? x[1]-y[1] : y[0]-x[0]);//这句话很重要int len people.length;// 插入 kfor (int i 0; i len; i) {int position people[i][1];//当前k即要插入的位置res.add(position, people[i]);}return res.toArray(new int[res.size()][]);}
}