思路:
最简单的是,直接开辟一个新的n*n矩阵,input[i][j] = res[j][n-1-i],但是这样的空间复杂度0(n^2)太高了。
好的解法是,将旋转90度分解为两个对称操作:先沿主对角线对称,再沿中轴线左右对称,这样时间复杂度仍为0(n^2),空间复杂度降为0(1)。
import java.util.*;
public class Solution {
public int[][] rotateMatrix(int[][] mat, int n) {
for (int i = 0; i < n; i++) { // 先沿主对角线翻转
for (int j = 0; j < i; j++) {
int temp = mat[i][j];
mat[i][j] = mat[j][i];
mat[j][i] = temp;
}
}
for (int i = 0; i < n; i++) { // 再沿中轴线翻转
for (int j = 0; j < n / 2; j++) {
int temp = mat[i][j];
mat[i][j] = mat[i][n - 1 - j];
mat[i][n - 1 - j] = temp;
}
}
return mat;
}
}