空间复杂度为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;
}
};