class Solution {    public void rotate(int[][] matrix) {        if (matrix.length != matrix[0].length)            return;        int n = matrix.length;        // 解法一:        // int[][] matrixNew = new int[n][n];        // for (int i = 0; i < n; i++) {        //     for (int j = 0; j < n; j++) {        //         matrixNew[j][n - 1 - i] = matrix[i][j];        //     }        // }        // // 将每个位置对应的值写回        // for (int i = 0; i < n; i++) {        //     for (int j = 0; j < n; j++) {        //         matrix[i][j] = matrixNew[i][j];        //     }        // }        // 由于题目限定不能使用新的空间,因此下面采用方法二:        // 解法二:一维数组旋转+方阵原地转置        for (int i = 0; i < n / 2; i++) {            for (int j = 0; j < n; j++) {                int tmp = matrix[i][j];                matrix[i][j] = matrix[n - 1 -i][j];                matrix[n - 1 - i][j] = tmp;            }        }        for (int i = 0; i < n; i++) {            for (int j = 0; j < i; j++) {                int tmp = matrix[i][j];                matrix[i][j] = matrix[j][i];                matrix[j][i] = tmp;            }        }    }}