题目:
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?
Solution:
其实就是矩阵的旋转,找到规律即可,比较简单,代码如下:
class Solution {
public:
void rotate(vector<vector<int>>& matrix)
{
int M = matrix.size();
if(M == 0)
return;
int N = matrix[0].size();
int layer = 0;
while(layer < M / 2)
{
int rowLen = N- 2 * layer; //每一层的长度
int i ,j;
i = 0;
while(i < rowLen - 1)
{
int t = matrix[layer][layer+i];
matrix[layer][layer+i] = matrix[M-1-layer-i][layer];
matrix[M-1-layer-i][layer] = matrix[M-1-layer][N-1 - layer-i];
matrix[M-1-layer][N-1 - layer-i] = matrix[layer + i][N-1-layer];
matrix[layer + i][N-1-layer] = t;
i++;
}
layer++;
}
}
void print(vector<vector<int>> matrix)
{
for(int i =0;i < matrix.size();i++)
{
for(int j =0;j < matrix[i].size();j++)
{
cout<<matrix[i][j]<<"\t";
}
cout<<endl;
}
}
};