You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
分析:
其实是对于每一个格子而言,其实与其余三个格子形成循环对调。
代码:
class Solution {
public:
void rotate(vector<vector<int> > &matrix)
{
int n=matrix.size();
if (n<2)
{
return;
}
int k=0;
while(n-k>=2)
{
for (int j=k; j < n-1; j++)
{
MainOperation(matrix,n-1,j);
}
n=n--;
k++;
}
}
public:
void MainOperation(vector<vector<int>>&matrix,int i,int j)
{
int n=matrix.size()-1;
int k=0;
k=matrix[i][j];
matrix[i][j]=matrix[n-j][i];
matrix[n-j][i]=matrix[n-i][n-j];
matrix[n-i][n-j]=matrix[j][n-i];
matrix[j][n-i]=k;
}
};