class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < n; i ++)
for (int j = 0; j < i; j ++)
swap(matrix[i][j], matrix[j][i]); //先沿对角线交换
for (int i = 0; i < n; i ++)
for (int j = 0, k = n - 1; j < k; j ++, k --) // 再左右两边元素交换
swap(matrix[i][j], matrix[i][k]);
}
};
三种旋转方式:
顺时针旋转90度:主对角线(左下和右上)翻转,然后中间左右翻转
逆时针旋转90度:主对角线(左下和右上)翻转,然后中间上下翻转
旋转180度:主对角线(左下和右上)翻转,然后副对角线(左上和右下)翻转