
翻转法:
1.核心思想:顺时针旋转90度 = 先上下水平翻转 再沿主对角线翻转。
2.两部操作详解:
第一步:水平翻转:矩阵沿着水平中线对折。只需要遍历矩阵的上半部分,然后和下半部分行交换即可。m[i][j] --m[n-1-i][j] 这二者互换。
第二步:沿主对角线翻转:m[i][j] ---m[j][i].只需要遍历主对角线的左下角的元素
cpp
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
//整体思路 先水平翻转 再 主对角线翻转
int r = matrix.size();//行数
int l = matrix[0].size();
//水平对折
for(int i = 0;i<((r/2));i++){//遍历一半的行数
for(int j = 0;j<l;j++){//列
//交换
swap(matrix[i][j], matrix[l - i - 1][j]);
}
}
//主对角线交换
for(int i = 1;i<r;i++){
for(int j=0;j<i;j++){
swap(matrix[i][j], matrix[j][i]);
}
}
}
};