运用算法求解,首先判断矩阵维数奇偶方便后续哦按段,该操作不会影响算法复杂度,虽然会让算法冗余,然后可以将矩阵分成四个方块,只需对一个方块求解,借用变量帮助值的交换,时间复杂度降为n^2/4,空间复杂度为O(1)

class Solution {
public:
    vector<vector<int> > rotateMatrix(vector<vector<int> > mat, int n) {
        // write code here
        int change1,change2,change3,change4;
        if(n%2==0){
        for(int i=0;i<=(n-1)/2;i++){
            for(int j=0;j<=(n-1)/2;j++){
                change1=mat[i][j];
                change2=mat[j][n-i-1];
                change3=mat[n-i-1][n-j-1];
                change4=mat[n-j-1][i];
                mat[j][n-i-1]=change1;
                mat[n-i-1][n-j-1]=change2;
                mat[n-j-1][i]=change3;
                mat[i][j]=change4;
            }
        }}
        if(n%2!=0){
            cout<<"奇数";
        for(int i=0;i<=(n-1)/2;i++){
            for(int j=0;j<(n-1)/2;j++){
                change1=mat[i][j];
                change2=mat[j][n-i-1];
                change3=mat[n-i-1][n-j-1];
                change4=mat[n-j-1][i];
                mat[j][n-i-1]=change1;
                mat[n-i-1][n-j-1]=change2;
                mat[n-j-1][i]=change3;
                mat[i][j]=change4;
            }
        }}
        return mat;
    }
};