题目:
吐槽:1.首先要知道这是个排序的题目。2.将矩阵转换成需要返回的数据格式[C*R][2]的二维数组。3.以一维数组的角度进行比较排序。
代码:
public int[][] allCellsDistOrder(int R, int C, final int r0, final int c0) {
//1.将矩阵转换成,需要输出的二维数组格式。
int[][] result = new int[R*C][2];
int index = 0;
for(int i =0;i<R;i++){
for(int j =0;j<C;j++){
int[] xy = {i,j};
result[index++] = xy;
}
}
//2.将result[][]看成result[]的一维数组进行比较。通过Comarator,比较器进行比较方法的规定进行排序。
Arrays.sort(result, new Comparator<int[]>() {
@Override
public int compare(int[] t1, int[] t2) {
int cha1 = Math.abs(t1[0] - r0) + Math.abs(t1[1] - c0);
int cha2 = Math.abs(t2[0] - r0) + Math.abs(t2[1] - c0);
return cha1- cha2;
}
});
return result;
}