本文介绍了向右旋转2D矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望2D矩阵向右旋转,它可以正常编译,但是当我尝试运行时,它说 array索引超出范围.例如,我希望 {{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)));
}

推荐答案

下面是一个有效的示例:

Here is a working example:

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;
}

我使用此代码在Tetris中旋转砖块.这段代码顺时针旋转矩阵.

I used this code to rotate my bricks in Tetris.This code rotates the matrix clockwise.

这篇关于向右旋转2D矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 02:36