- 图片顺时针旋转 90° 等于 转置 + 水平翻转
- 图片逆时针旋转 90° 等于 转置 + 垂直翻转
- 图片旋转 180° 等于 水平翻转 + 垂直翻转
了解了这些,方法明了了起来。
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int len = matrix.size();
// transpose
for(int i = 0; i < len; i++){
for(int j = i+1; j < len; j++){
int t = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = t;
}
}
// flip horizontal
for(int i = 0; i < len; i++){
for(int j = 0; j < len/2; j++){
int t = matrix[i][j];
matrix[i][j] = matrix[i][len-j-1];
matrix[i][len-j-1] = t;
}
}
return ;
}
};