距离顺序排列矩阵单元格(1030-java)
给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。
另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。
返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)
public class LC220_1030_allCellsDistOrder {
//排序public static int[][] allCellsDistOrder(int rows, int cols, int rCenter, int cCenter) {
Map<Integer, List<int[]>> map = new HashMap<>();for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
int dist = Math.abs(i - rCenter) + Math.abs(j - cCenter);List<int[]> list = map.getOrDefault(dist, new ArrayList<>());list.add(new int[]{
i, j});map.put(dist, list);}}int k = 0;int[][] res = new int[rows*cols][];for (Integer integer : map.keySet()) {
for (int[] ints : map.get(integer)) {
res[k++] = ints;}}return res;}public static void main(String[] args) {
int[][] ints = allCellsDistOrder(1, 2, 0, 0);for (int[] anInt : ints) {
for (int i : anInt) {
System.out.print(i + " ");}System.out.println();}}
}