一开始想一行一行的去rotate,发现会有很多冲突
其实可以就一个一个的去,每一个grid rotate四次之后回到原来的位置,稍微脑补下坐标变换
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
// i, j
// j, n - i - 1
// n - i - 1, n - j - 1
// n - j - 1, i
// i, j
// 0, 0 0, 2, 2, 2, 2, 0
int n, m;
n = matrix.size();
m = matrix[0].size();
int tmp, p, q;
for (int i = 0; i < n; i++) {
for (int j = i; j < m-i-1; j++) {
tmp = matrix[i][j];
matrix[i][j] = matrix[n-j-1][i];
matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
matrix[j][n-i-1] = tmp;
}
}
}
};