Rotate a 2d matrix to the right(向右旋转二维矩阵)
问题描述
我想要一个 2d 矩阵向右旋转,它编译得很好,但是当我尝试运行时,它说 数组索引超出范围异常.例如,我希望 {{10,20,30},{40,50,60}}
旋转成 {{40,10},{50,20},{60,30}}
:
I want a 2d matrix to rotate to the right, it compiles fine but when I try to the run it says that the array index is out of bounds exception. For example, I want {{10,20,30},{40,50,60}}
to rotate into {{40,10},{50,20},{60,30}}
:
public static int[][] rotate(int[][] m) {
int[][] rotateM = new int[m[0].length][m.length];
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[0].length; j++) {
rotateM[i][j] = m[j][m.length - i - 1];
}
}
return rotateM;
}
public static void main(String[] args) {
int[][] m = {
{10, 20, 30},
{40, 50, 60}};
System.out.println(Arrays.toString(rotate(m)));
}
推荐答案
这是一个工作示例:
private int[][] rotateMatrix(int[][] matrix) {
int backupH = h;
int backupW = w;
w = backupH;
h = backupW;
int[][] ret = new int[h][w];
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
ret[i][j] = matrix[w - j - 1][i];
}
}
return ret;
}
我使用此代码在俄罗斯方块中旋转我的积木.此代码顺时针旋转矩阵.
I used this code to rotate my bricks in Tetris. This code rotates the matrix clockwise.
这篇关于向右旋转二维矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:向右旋转二维矩阵


基础教程推荐
- 在 Java 中创建日期的正确方法是什么? 2022-01-01
- 如何在 JFrame 中覆盖 windowsClosing 事件 2022-01-01
- 大摇大摆的枚举 2022-01-01
- 如何在 Spring @Value 注解中正确指定默认值? 2022-01-01
- 多个组件的复杂布局 2022-01-01
- 验证是否调用了所有 getter 方法 2022-01-01
- Java 实例变量在两个语句中声明和初始化 2022-01-01
- 从 python 访问 JVM 2022-01-01
- Java Swing计时器未清除 2022-01-01
- 不推荐使用 Api 注释的描述 2022-01-01