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?
下面算法加上了主函数测试代码。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution
{
public:
void rotate(vector <vector<int>>& matrix) {
reverse(matrix.begin(), matrix.end());
for (int i = 0; i < matrix.size(); i++)
for (int j = i + 1; j < matrix[i].size(); ++j)
swap(matrix[i][j], matrix[j][i]);
}
};
int main() {
vector<vector<int>> matrix;
vector<int> tmp;
vector<int> cmp;
vector<int> kmp;
int n, m, k, j;
while (cin >> n&&n != 0) {
cin >> m;
cin >> k;
tmp.push_back(n);
cmp.push_back(m);
kmp.push_back(k);
}
matrix.push_back(tmp);
matrix.push_back(cmp);
matrix.push_back(kmp);
Solution *p = new Solution;
p->rotate(matrix);
for (int i = 0; i < matrix.size(); i++) {
for (j = 0; j < matrix[i].size(); j++)
cout << matrix[i][j];
cout << endl;
}
system("pause");
return 0;
}