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?
这个题倒是比较直接,就是矩阵的旋转。
旋转90°就等价于先上下反转(即关于x轴对称),再关于原点对称。
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
void rotate(vector<vector<int> > &matrix)
{
for(vector<vector<int> >::size_type i=0;i<matrix.size()/2;i++)
swap(matrix[i],matrix[matrix.size()-i-1]);
for(int i=1;i<matrix.size();i++)
for(int j=0;j<i;j++)
swap(matrix[i][j],matrix[j][i]);
//cout<<matrix[2][0]<<" "<<matrix[2][1]<<" "<<matrix[2][2]<<endl;
}
};
int main()
{
int i1[] = {1,2,3};
int i2[] = {4,5,6};
int i3[] = {7,8,9};
vector<int> mat1(i1,i1+3);
vector<int> mat2(i2,i2+3);
vector<int> mat3(i3,i3+3);
vector<vector<int> > matrix;
matrix.push_back(mat1);
matrix.push_back(mat2);
matrix.push_back(mat3);
Solution so;
so.rotate(matrix);
return 0;
}