题目
题目链接:https://leetcode-cn.com/problems/queue-reconstruction-by-height/
题目解析:
- 首先要先了解,这可以将people[0]比作身高值,如果高的人是看不到比自己矮的的人的,所以高的只会看到比自己高的或者跟自己一样高的。根据这个想法就可以先将二维数组排序
- 排完序之后,可以利用LinkedList集合,利用add(index,Element)这个方法,如果索引相同的情况下,后来的会在先来的前面。所以我们把排好序的数组放入集合,然后再一一放入,这样就排列好了。
代码
class Solution {
public int[][] reconstructQueue(int[][] people) {
//利用sort进行排序,排序的方法用Comparator的匿名内部类,排序的条件是,当o1[0]==o2[0]的时候,就让o1[1]和o2[1]进行判断,如果结果小于0则o1[1]<o2[1],否则就o2[1]>o1[1],如果不等于的话就后面的进行判断
Arrays.sort(people,new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0];
}
});
//创建LinkedList集合进行存储
List<int[]> linkedList = new LinkedList<>();
//开始遍历插入
for(int[] ans:people) {
linkedList.add(ans[1],ans);
}
int l = people.length;
//返回一个数组
return linkedList.toArray(new int[l][2]);
}
}