You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现N*M非方阵90°顺时针旋转的开发方案求教

Java实现N*M矩阵90°顺时针旋转方案

核心逻辑

原矩阵维度为n行 * m列,旋转后矩阵维度变为m行 * n列,原矩阵坐标(原行号r, 原列号c)对应新矩阵坐标规则为:

  • 新行号 = 原列号c
  • 新列号 = 原矩阵总行数n - 1 - 原行号r

以你给出的3行4列示例验证:

原矩阵[0][0] = 1,对应新矩阵[0][2] = 1
原矩阵[2][3] = 2,对应新矩阵[3][0] = 2
完全符合预期旋转效果。

完整实现代码

public class MatrixRotation {
    // 90°顺时针旋转核心方法
    public static int[][] rotateClockwise90(int[][] matrix) {
        // 边界异常处理
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return new int[0][0];
        }
        int originRows = matrix.length;
        int originCols = matrix[0].length;
        // 初始化旋转后矩阵,行列维度互换
        int[][] rotatedMatrix = new int[originCols][originRows];
        // 遍历原矩阵完成坐标映射赋值
        for (int r = 0; r < originRows; r++) {
            for (int c = 0; c < originCols; c++) {
                rotatedMatrix[c][originRows - 1 - r] = matrix[r][c];
            }
        }
        return rotatedMatrix;
    }

    // 矩阵打印辅助方法,用于效果验证
    public static void printMatrix(int[][] matrix) {
        for (int[] row : matrix) {
            for (int i = 0; i < row.length; i++) {
                System.out.print(row[i]);
                if (i != row.length - 1) {
                    System.out.print(", ");
                }
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        // 测试3*4非方阵旋转
        System.out.println("=== 3*4原矩阵 ===");
        int[][] matrix3x4 = {{1,2,3,4}, {5,6,7,8}, {9,0,1,2}};
        printMatrix(matrix3x4);
        System.out.println("=== 旋转后4*3矩阵 ===");
        int[][] rotated4x3 = rotateClockwise90(matrix3x4);
        printMatrix(rotated4x3);

        // 测试3*3方阵旋转
        System.out.println("\n=== 3*3原矩阵 ===");
        int[][] matrix3x3 = {{1,2,3}, {4,5,6}, {7,8,9}};
        printMatrix(matrix3x3);
        System.out.println("=== 旋转后3*3矩阵 ===");
        int[][] rotated3x3 = rotateClockwise90(matrix3x3);
        printMatrix(rotated3x3);
    }
}

实现说明

  • 兼容空矩阵、单行/单列矩阵等边界场景
  • 时间复杂度O(n*m):仅需遍历一次原矩阵所有元素
  • 空间复杂度O(n*m):生成独立的新矩阵,不修改原矩阵内容,非方阵场景不推荐原地修改,实现成本极高且无明显性能收益

内容的提问来源于stack exchange,提问作者Ben Wunderlich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:48:03