本题必须回顾,主要是数据结构方面迭代知识不熟,暂时不想看,等后期再复习吧
class Solution {
//本题需要重新回顾,倒是不难,难在对这些数据结构和重写方法不熟练,让我自己写绝对写不出来
public int[][] reconstructQueue(int[][] people) {
//比较器,重写方法,若第一个数相等,就比较第二个数,第二个数小的排前面
//若第一个数不相等,则大数排前面
Arrays.sort(people, (a, b) -> {
if (a[0] == b[0]) return a[1] - b[1];
return b[0] - a[0];
});
//linkedList盛放结果,对people遍历,直接向que的索引位置放数组值
//索引相同时,会直接挤掉原来的数,原来的数按顺序向后走
LinkedList<int[]> que = new LinkedList<>();
for (int[] p : people) {
que.add(p[1],p);
}
//需要转成Array变成int[][]二维数组,长度和people相等
return que.toArray(new int[people.length][]);
}
}