思路:
这道题有多种解法,我们可以先把整个数组进行水平翻转,得到如下图:
然后再把这个数组进行对角线翻转,此时如果你是以左斜对角线为主的话就会得到向右旋转90度;如果是以右斜对角线为主,你将得到向左旋转90度的图像。(该题是求向右旋转90度,如图所示)
代码:
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
// 水平翻转
for (int i = 0; i < n / 2; ++i) {
for (int j = 0; j < n; ++j) {
swap(matrix[i][j], matrix[n - i - 1][j]);
}
}
// 主对角线翻转
for (int i = 0; i < n; ++i) {
for (int j = 0; j < i; ++j) {
swap(matrix[i][j], matrix[j][i]);
}
}
}
};