运用算法求解,首先判断矩阵维数奇偶方便后续哦按段,该操作不会影响算法复杂度,虽然会让算法冗余,然后可以将矩阵分成四个方块,只需对一个方块求解,借用变量帮助值的交换,时间复杂度降为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;
}
};