旋转矩阵(中等)
2020年9月25日
题目来源:力扣
解题
- 使用另外的数组
违背题目意思
class Solution {
public void rotate(int[][] matrix) {
//使用额外内存空间
int x=matrix.length;
int y=matrix[0].length;
int[][] result=new int[x][y];
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
result[j][x-1-i]=matrix[i][j];
}
}
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
matrix[i][j]=result[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; ++j) {
int temp = matrix[i][j];
matrix[i][j] = matrix[n - i - 1][j];
matrix[n - i - 1][j] = temp;
}
}
// 主对角线翻转
for (int i = 0; i < n; ++i) {
for (int j = 0; j < i; ++j) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
}