空间复杂度为O(n*n)的题解

class Solution {
public:
    vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
        // write code here
        vector<vector<int> > res(n,vector<int>(n,0));
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                res[i][j]=mat[n-1-j][i];
            }
        }
        return res;
    }
};

空间复杂度为O(1) 的题解(原地变换)

先进行对角线交换,在进行左右交换

class Solution {
public:
    vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
        // write code here
        int i,j,temp;
        for(i=0;i<n;i++){  //先根据对角线(左上--右下)交换
            for(j=0;j<i;j++){
                temp=mat[i][j];
                mat[i][j]=mat[j][i];
                mat[j][i]=temp;
            }
        }
        for(i=0;i<n;i++){  //再进行左右交换
            for(j=0;j<n/2;j++){
                temp=mat[i][j];
                mat[i][j]=mat[i][n-j-1];
                mat[i][n-1-j]=temp;
            }
        }
        return mat;
    }
};