旋转矩阵
一:第i行变成倒数第i列,第j列变成第j行
- 使用辅助数组
class Solution {
public void rotate(int[][] matrix) {
if(matrix.length == 0 || matrix[0].length == 0){
return;
}
int[][] matrixCopy = new int[matrix.length][matrix.length];
int temp = 0;
for(int a=0;a<matrix.length;a++){
for(int b=0;b<matrix[0].length;b++){
matrixCopy[a][b] = matrix[a][b];
}
}
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
// temp = matrix[j][matrix.length-i-1];
matrix[j][matrix.length-i-1] = matrixCopy[i][j];
}
}
return ;
}
}
- 原地旋转 用temp保存要被覆盖的元素,递推
n/2 (n+1)/2 旋转一次,四个元素变换位置,位置变换元素数:奇数矩阵 n^2-1 ,偶数矩阵 n^2 ;要覆盖最多数量,并且不能多出一个单位 ; n*(n-1) nn n(n+1) 从0开始,所以是<
class Solution{
public void rotate(int[][] matrix){
int n = matrix.length;
if(n==0||matrix[0].length == 0){
return;
}
//
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;
}
}
return;
}
}