题目描述
链接:点我
注意:多看几遍题目,开始没看懂...相当于计算矩阵网格里面的点(不要计算边界) 我开了题解才明白题的意思 orz...
题解
java
class Solution {
public int[][] allCellsDistOrder(int rows, int cols, int rCenter, int cCenter) {
int ans[][] = new int[rows*cols][]; // 是一个二维整数数组,用于存储排序后的单元格坐标。
for(int i = 0;i<rows;i++){
for(int j=0;j<cols;j++)
//将矩阵中的每个单元格的行索引 i 和列索引 j 存储在 ans 数组的相应位置上,从而形成一个具有二维坐标信息的数组。
ans[cols*i + j] = new int[]{i,j}; //
}
// 自定义数组排序 参考:https://blog.csdn.net/qq_45733304/article/details/124350468
Arrays.sort(ans, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
//升序排列 下标0表示行,1表示列
return (Math.abs(o1[0] - rCenter) + Math.abs(o1[1] - cCenter))-(Math.abs(o2[0] - rCenter) + Math.abs(o2[1] - cCenter));
}
});
return ans;
}
}