当前位置: 代码迷 >> 综合 >> 【距离顺序排列矩阵单元格(1030-java)】
  详细解决方案

【距离顺序排列矩阵单元格(1030-java)】

热度:67   发布时间:2023-12-16 03:20:26.0

距离顺序排列矩阵单元格(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();}}
}
  相关解决方案