48. 旋转图像
题目描述
方法一思路:辅助数组(我觉得这种方法很暴力,很无脑,一下可以想到)
具体代码
class Solution {
public void rotate(int[][] matrix) {
int n=matrix.length;
int [][]matrixF=new int[n][n];
for(int i=0;i<n;i++){
int k=0;
for(int j=n-1;j>=0;j--)
{
matrixF[i][k++]=matrix[j][i];
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
matrix[i][j] = matrixF[i][j];
}
}
}
}
方法二思路:原地旋转数组(官方题解)
由于题解文字描述过于长,因此画了张图来帮助理解:
具体代码:
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for (int i = 0; i < n / 2; ++i) {
for (int j = 0; j < (n + 1) / 2; ++j) {
int temp = matrix[i][j];
matrix[i][j] = matrix[n - j - 1][i];
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
matrix[j][n - i - 1] = temp;
}
}
}
}