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 i,j,len;
len=matrix.size();
if(len==0) return;
for(i=0;i<len;i++){
for(j=i;j<len;j++){
swap(matrix[i][j],matrix[j][i]);
}
}
i=0,j=len-1;
while(i<j){
for(int k=0;k<len;k++)
swap(matrix[k][i],matrix[k][j]);
i++;
j--;
}
}
};