**題目要求:**![在這裏插入圖片描述](https://img-blog.csdnimg.cn/2019081610310432.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ1NjM2,size_16,color_FFFFFF,t_70)
分析:
-
先將輸入的數組按照身高h進行降序排列,方法是利用匿名內部類重寫Comparator接口中的compare方法;
按照題中給出的例子爲例,此時得到的people順序爲:[[7, 0] [7, 1] [6, 1] [5, 0] [5, 2] [4, 4]]
-
設置一個list,從h最大的數組開始依次往list中放,其位置爲k的大小;
-
設置一個二維數組result,對排過序的people進行遍歷,其k值大小就是其座標大小,如下圖所示。
具體代碼如下:class Solution {
public int[][] reconstructQueue(int[][] people) {
if(people == null)
return null;
Arrays.sort(people, new Comparator<int[]>() {
@Override
public int compare(int[] a, int[] b) {
if(a[0] == b[0])
return a[1] - b[1];
return b[0] - a[0];
}
});
List<int[]> list = new ArrayList<>();
for(int[] p : people) {
list.add(p[1], p);
}
int[][] result = new int[people.length][2];
for(int i=0; i<list.size(); i++) {
result[i] = list.get(i);
}
return result;
}
}