leetcode 48. 旋转图像
思路 1 通过数组下标进行计算
先沿着竖直方向中心线翻转+再沿着主对角线翻转
代码:
class Solution { public: void rotate(vector<vector<int>>& matrix) { int len = matrix.size(); //先进行行以中间线进行翻转 for(auto & num :matrix) { reverse(num.begin(),num.end()); } for(int i =0;i<len;i++) { for(int j = 0;j<=len-1-i;j++) { swap(matrix[i][j] , matrix[len-1-j][len-1-i]); //沿着负对角线翻转 } } } };
思路2
先进行行列转换,对转换后的矩阵沿着中心线进行左右翻转\
后面一一步可使用reverse函数解决
代码
class Solution { public: void rotate(vector<vector<int>>& matrix) { int len = matrix.size(); for(int i = 0;i<len;i++) { for(int j = 0;j<i;j++) { swap(matrix[i][j],matrix[j][i]); // } } for (auto & num:matrix) { reverse(num.begin(),num.end()); //对每一行进行交换 } } };
以大多数人努力程度之低,根本轮不到去拼天赋~