从o开始刷题(8) - 正方形矩阵顺时针旋转90度

181 阅读1分钟

[程序源代码面试指南第二版] 正方形矩阵顺时针旋转90度

需求

矩阵顺时针旋转90°,空间复杂度0(1)

思路

按组交换,左上->右上,右上->右下,右下->左下,左下>左上

附件

代码

public class MATRIX_rotate_circle {
    
    public static void rotate(int[][] matrix) {
        int tR = 0;
        int tC = 0;
        int dR = matrix.length - 1;
        int dC = matrix[0].length - 1;
//        (tC,tR)
//
//               (dR,dC)
        while (tR < dR) {
        //总的组数
            int times= dC-tC;
            int tmp=0;
            for(int i=0;i<times;i++){
                tmp=matrix[tR][tC+i];
                matrix[tR][tC+i]=matrix[dR-i][tC];
                matrix[dR-i][tC]=matrix[dR][dC-i];
                matrix[dR][dC-i]=matrix[tR+i][dC];
                matrix[tR+i][dC]=tmp;
            }
            tR++;
            tC++;
            dR--;
            dC--;
            }
        // 打印
        for(int i =0;i<matrix[0].length;i++){
            for(int j=0;j<matrix.length;j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }

}