java - 向右旋转二维矩阵

标签 java arrays matrix multidimensional-array rotation

<分区>

我想要一个二维矩阵向右旋转,它可以正常编译,但是当我尝试运行时它说数组索引超出范围异常。例如,我希望 {{10,20,30},{40,50,60}} 旋转成 {{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;
}

我使用此代码在俄罗斯方 block 中旋转我的积木。 此代码顺时针旋转矩阵。

关于java - 向右旋转二维矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707595/

相关文章:

matrix - 将全局分层旋转转换为局部旋转并返回

矩阵的 Python 逆

java - Hybris 更新问题 - azure.abstractbundler6307sn 表不存在

java - JFrame - 从 keylistener 类访问我的窗口

java - 按照文件中定义的顺序获取所有 JSON 键

javascript - 如何用一个字符串数组(Javascript、HTML)填充 3 列

java - 在给定矩阵中搜索值密度的最佳方法是什么?

java - 如果if语句为假,为什么这个for循环会运行?

java - 强制执行 "single-use"的最简单方法,在 java 中工厂类的两步 Builder 实现

c - 如何获得这样的 C 数组的元素数?