publicvoidrotate(int[][] matrix){ int n = matrix.length; // Reverse for (int i = 0; i < n / 2; ++i) { int j = n - 1 - i; int[] cache = matrix[i]; matrix[i] = matrix[j]; matrix[j] = cache; } // Transpose for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { int cache = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = cache; } } } `
解法二
1 2 3 4 5 6 7 8 9 10 11 12 13 14
publicvoidrotate(int[][] matrix){ int n = matrix.length; for (int i = 0; i < n / 2; ++i) { int j = n - 1 - i; for (int p = i; p < j; ++p) { int q = n - 1 - p; int cache = matrix[i][p]; matrix[i][p] = matrix[q][i]; matrix[q][i] = matrix[j][q]; matrix[j][q] = matrix[p][j]; matrix[p][j] = cache; } } }