给定一个 n × n 的二维矩阵 matrix
表示一个图像。请你将图像顺时针旋转 90 度
解法一:
创建另一个数组,直接将新数组中的按照逆时针的拷贝过去就行
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
auto matrix_ = matrix;
for(int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[j][n - i - 1] = matrix_[i][j];
}
}
}
};
解法二:
很简单就是从最外圈依次四个为一组进行旋转交换,j 控制每次每行旋转完,i 控制一圈一圈的旋转
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n=matrix.size(); //行数
int temp;
for(int i=0; i <= n / 2; i++) {
for(int j=i; j < n-i-1; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[n - j - 1][i];
matrix[n - j - 1][i] = matrix[n - i - 1][n - 1 - j];
matrix[n - i - 1][n - 1 - j] = matrix[j][n - 1 - i];
matrix[j][ - 1 - i] = temp;
}
}
}
};