给定一个 n × n 的二维矩阵 matrix
表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
//用hand保存换下来的值,根据现在的位置(i,j)寻找hand应该存放的位置
//flag为1即代表该位置的值已经正确
class Solution {
public:
int flag[20][20];
void adjust(vector<vector<int>>& matrix,int hand,int i,int j){
int n=matrix.size();
if(flag[j][(n-1)-i]) return;
swap(hand,matrix[j][(n-1)-i]);
int temp=i;
i=j;
j=(n-1)-temp;
flag[i][j]=1;
adjust(matrix,hand,i,j);
}
void rotate(vector<vector<int>>& matrix) {
int n=matrix.size();
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
flag[i][j]=0;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(!flag[i][j]) adjust(matrix,matrix[i][j],i,j);
}
}
}
};