题目
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?
常数空间进行旋转,
每次旋转操作需要更改旋转轮换一圈的4个点的值,
而需要操作的区域为n/2上取整,n/2下取整,一个左上角的矩形范围内的点。
代码:
class Solution {
public:
void rotate(vector<vector<int> > &matrix) {
int len=matrix.size(); //矩阵长度
int len1=(len+1)/2,len2=len-len1; //需要旋转的行列数
int i,j,temp;
for(i=0;i<len1;i++) //依次旋转对应一圈的4个元素
{
for(j=0;j<len2;j++)
{
temp=matrix[i][j];
matrix[i][j]=matrix[len-1-j][i];
matrix[len-1-j][i]=matrix[len-1-i][len-1-j];
matrix[len-1-i][len-1-j]=matrix[j][len-1-i];
matrix[j][len-1-i]=temp;
}
}
}
};