Rotate Image
Mar 18 '12
4182 / 9471
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?
这题我第一次做时候,实现的非常复杂。人肉实现rotate。code很麻烦。
后来偶然间看到同学的做法,很妙:
rotate(M) = traspose(M)后,swap列
例如:
123
456
789
先transpose:
147
258
369
然后对调第1,3列
741
852
963
OK!
class Solution {
public:
void rotate(vector<vector<int> > &matrix) {
int len = matrix.size();
if (len == 0) return ;
for (int i = 0; i < len; i++) {
for (int j = i; j < len; j++) {
swap(matrix[i][j], matrix[j][i]);
}
}
int i = 0, j = len - 1;
while (i < j) {
for (int k = 0; k < len; k++) {
swap(matrix[k][i], matrix[k][j]);
}
i++, j--;
}
}
};