1、思路
使用原地旋转的方法:
-
首先沿右上-左下对角线翻转(相当于翻转了
270°
); -
交换后的数组此时与目标数组呈镜像,只需要交换每行左右两侧的元素即可(相当于再翻转
180°
),(270° + 180°) % 360° = 90°
,步骤如下图所示。
2、代码
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
swap(matrix[i][j], matrix[j][i]); //交换每条对角线上的元素
}
}
int mid = n >> 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < mid; j++){ //交换每行左右两侧的元素
swap(matrix[i][j], matrix[i][n - j - 1]);
}
}
}
};
我活了这么久第一次知道可以不用多开一个数组就自己转,
谢谢大佬!qwq
哈哈😋