一、模拟旋转
空间复杂度 O(n^2)O(n),时间复杂度 O(n^2)O(n)
算法:使用ans记录结果,遍历mat这一行结果,是ans对应列的结果。行列之间的映射关系是:i->n-i-1
import java.util.*;
public class Solution{
public int[][] rotateMatrix(int[][] mat, int n) {
int[][] ans = new int[n][n];
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
ans[j][n-i-1]=mat[i][j];
}
}
return ans;
}
}
二、先中心对称,后左右对称
时间(n*n) 空间(1)
算法如下:先中心对称,后左右对称就是结果
import java.util.*;
public class Solution {
public int[][] rotateMatrix(int[][] mat, int n) {
int i,j;
//1.中心对称
for(i=0;i<n;i++){
for(j=0;j<=i;j++){
int t = mat[i][j];
mat[i][j]=mat[j][i];
mat[j][i]=t;
}
}
//2.左右对称
for(i=0;i<n;i++){
for(j=0;j<n/2;j++){
int t = mat[i][j];
mat[i][j]=mat[i][n-j-1];
mat[i][n-j-1]=t;
}
}
return mat;
}
}