假设有打乱顺序的一群人站成一个队列。每个人由一个整数对 (h, k) 表示,其中 h 是这个人的身高,k 是排在这个人前面且身高大于或等于 h 的人数。 编写一个算法来重建这个队列。
解题思路
先排序,再插入,排序的规则是:按照高度 h 降序,k 升序排序。再遍历排序后的数组,根据 k 将元素插入到 k 的位置上。核心思想是:高个子先站好位,矮个子插入到 k 位置上,前面肯定有 k 个高个子。
class Solution {
public int[][] reconstructQueue(int[][] people) {
Arrays.sort(people, (o1, o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0]);
LinkedList<int[]> list = new LinkedList<>();
for (int[] i : people) {
list.add(i[1], i);
}
return list.toArray(new int[list.size()][2]);
}
}
来自:https://www.cnblogs.com/Yee-Q/p/13986577.html
© 版权声明
博主的文章没有高度、深度和广度,只是凑字数。利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章!如若有侵权,请联系博主删除。
喜欢就点个赞吧