【距离顺序排列矩阵单元格(1030-java)】
JAVA 矩阵 距离 单元格
2023-09-27 14:29:28 时间
距离顺序排列矩阵单元格(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();
}
}
}
相关文章
- Java基础——Statement与PrepareStatement
- Java中的自动类型转换/隐式类型转换
- Java 文件操作一(写文件、按行读文件、删除文件、复制文件、追加数据、创建临时文件、修改最后修改日期、获取文件大小)
- Java中如何遍历Map对象的4种方法
- 基于Java实现五子棋【100010213】
- java 把 PEM 格式的公钥证书转换为 X.509 格式的证书
- java正则表达式
- 【蓝桥杯Java组】一学就会的小技巧(六):矩阵快速幂的应用—加速求数列
- Java学习---MD5加密算法
- 蓝桥杯VIP试题 之 基础练习 矩阵乘法 - JAVA
- JAVA Calendar具体解释
- Java中检查字符串是否是有效日期