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? ...
Description
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?
思路
- 先上下對稱交換,然後沿主對角線對稱交換
代碼
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
if(n <= 1) return;
for(int i = 0; i < n / 2; ++i){
for(int j = 0; j < n; ++j)
swap(matrix[i][j], matrix[n - 1 - i][j]);
}
for(int i = 0; i < n - 1; ++i){
for(int j = i + 1; j < n; ++j){
swap(matrix[j][i], matrix[i][j]);
}
}
}
};