要求:rt
思路:
法一:模拟
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n=matrix.size();
for(int start=0;start<n/2;++start){
for(int i=start;i<n-start-1;++i){
int ii=n-i-1;
int up=matrix[start][i];
int right=matrix[i][n-start-1];
int down=matrix[n-start-1][ii];
int left=matrix[ii][start];
matrix[start][i]=left;
matrix[i][n-start-1]=up;
matrix[n-start-1][ii]=right;
matrix[ii][start]=down;
}
}
}
};
法二:直观来看,按对角线翻转,再左右翻转
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n=matrix.size();
for(int i=0;i<n;++i){
for(int j=i+1;j<n;++j){
swap(matrix[i][j],matrix[j][i]);
}
}
for(int i=0;i<n;++i){
for(int j=0;j<n/2;++j){
swap(matrix[i][j],matrix[i][n-j-1]);
}
}
}
};