class Solution {
// 矮个子插队,高个子看不见;所以我们可以先安排高个子的位置,再通过插队的方式安排矮个子的位置
// 身高从大到小排(身高相同k小的站前面)
//先按照身高h降序排序,这样处理时可以确保当前插入的元素之前的所有元素身高都不小于它,从而简化位置的确定。
//如果身高相同,则按照序号k升序排序,因为身高相同的情况下,序号小的人应该排在前面
public int[][] reconstructQueue(int[][] people) {
Arrays.sort(people, (a,b) -> b[0] == a[0]? a[1] - b[1] : b[0] - a[0]);
List<int[]> list = new ArrayList<>();
for (int i = 0; i < people.length; i++) {
list.add(people[i][1], people[i]);
}
return list.toArray(new int[list.size()][2]); // list.toArray将list转成array
}
}