思路:
数组翻转。时间复杂度O(N^2),空间复杂度O(1)。
先沿副对角线翻转;
再沿中心线翻转。
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int m = matrix.size();
//diagonal
for(int i = 0; i < m; ++i) {
for(int j = 0; j < m - i; ++j) {
swap(matrix[i][j], matrix[m - j - 1][m - i - 1]);
}
}
//midline
for(int i = 0; i < m/2; ++i) {
for(int j = 0; j < m; ++j) {
swap(matrix[i][j], matrix[m - i - 1][j]);
}
}
}
};