【问题标题】:Rotating an N * M Matrix in Java在 Java 中旋转 N * M 矩阵
【发布时间】:2021-10-28 21:09:09
【问题描述】:

我正在尝试将字符网格顺时针旋转 90°。下面是一个例子:

[1, 2, 3],       [7, 4, 1],
[4, 5, 6],  -->  [8, 5, 2],
[7, 8, 9];       [9, 6, 3];

虽然上面的示例显示了一个 3 * 3 网格 (n * n) 正在旋转,但我正在尝试找出一种方法来旋转 * m 网格,例如 6 * 5。我无法计算自己搞定或者网上找资源。

期望的结果:

[1, 2, 3, 4],       [9, 5, 1],
[5, 6, 7, 8],  -->  [0, 6, 2],
[9, 0, 1, 2];       [1, 7, 3],
                    [2, 8, 4];

【问题讨论】:

    标签: java arrays matrix rotation


    【解决方案1】:

    试试这个。

    static int[][] rotate90(int[][] m) {
        int rows = m.length, cols = m[0].length;
        int[][] n = new int[cols][rows];
        for (int r = 0, cc = rows - 1; r < rows; ++r, --cc)
            for (int c = 0, rr = 0; c < cols; ++c, ++rr)
                n[rr][cc] = m[r][c];
        return n;
    }
    
    public static void main(String args[]) {
        int[][] input = {
            {1, 2, 3, 4},
            {5, 6, 7, 8},
            {9, 0, 1, 2},
        };
        int[][] rotated = rotate90(input);
        for (int[] row : rotated)
            System.out.println(Arrays.toString(row));
    }
    

    输出:

    [9, 5, 1]
    [0, 6, 2]
    [1, 7, 3]
    [2, 8, 4]
    

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多