LeetCode:20.旋转图像
旋转图像
1.辅助数组
可以使用一个临时的数组来保存旋转结果,但是这不符合题目要求
class Solution {
public:void rotate(vector<vector<int>>& matrix) {int n = matrix.size();// 辅助数组临时保存旋转结果vector<vector<int>> matrix_new = matrix;// 第 i 行 第 j 个元素 旋转后 倒数第 i 列 第 j 位置for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) matrix_new[j][n - i - 1] = matrix[i][j];matrix = matrix_new;}
};
2.两次翻转
通过水平翻转和主对角线翻转
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]);}
};