您的位置:首页 > 其它

LeetCode-Rotate Image-图像旋转-矩阵元素操作

2014-10-20 20:24 555 查看
https://oj.leetcode.com/problems/rotate-image/

90度顺时针旋转一个矩阵。很容易联想到矩阵转置。但是矩阵转置是将第i行变成了第i列。而这个旋转的结果是要使第i行变成第n-i列。

所以在转置之后再将每一列调整到其应该在的地方即可。

还有一种方法是注意到每个元素的旋转是四个一组: (i,j) -->(j,n-i) --> (n-i,n-j)-->(n-j,i)-->(i,j)。如果能够准确的枚举出不重复的所有组,就能更快的旋转。

class Solution {
public:
void rotate(vector<vector<int> > &matrix) {
int n=matrix.size();
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
swap(matrix[i][j],matrix[j][i]);
}
}
for(int j=0;j<n/2;j++){
for(int i=0;i<n;i++){
swap(matrix[i][j],matrix[i][n-1-j]);
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: