思路
让最高的人站在前面(降序),例如[7,0],然后[7,1](升序) 符合单个最优解
再将低的人插入高的人前面(高的人已完成的排序也不会受到影响)
public static int[][] reconstructQueue(int[][] people) {
/**
* 思路
让最高的人站在前面(降序),例如[7,0],然后[7,1](升序) 符合单个最优解
再将低的人插入高的人前面(高的人已完成的排序也不会受到影响)
*/
//将数组排序 按照先身高降序,再个数升序
Arrays.sort(people,new Comparator<int[]>() {
public int compare(int[] arr1,int[] arr2) {
if (arr1[0] > arr2[0]) {
return -1;
}else if (arr1[0] == arr2[0] ) {
if (arr1[1] >= arr2[1]) {
return 1;
}else {
return -1;
}
}else {
return 1;
}
}
});
ArrayList<int[]> peopleList = new ArrayList<>();
for (int[] arr : people) {
peopleList.add(arr[1],arr);
}
int[][] queue = peopleList.toArray(new int[peopleList.size()][]);
return queue;
}