You are given an n n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
该题目的关键在于矩阵怎样变化才能达到顺时针旋转90度的效果,经过研究,其实是将矩阵先按副对角线对换,然后在上下对换即可
public static void solution2_1_16(int[][] matrix,int n){
//首先以主对角线为轴翻转一次
int temp;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
temp=matrix[i][j];
matrix[i][j]=matrix[n-1-j][n-1-i];
matrix[n-1-j][n-1-i]=temp;
}
}
if(n%2==0){
for(int i=0;i<n/2-1;i++){
for(int j=0;j<n;j++){
temp=matrix[i][j];
matrix[i][j]=matrix[n-1-i][j];
matrix[n-1-i][j]=temp;
}
}
}
else{
for(int i=0;i<n/2;i++){
for(int j=0;j<n;j++){
temp=matrix[i][j];
matrix[i][j]=matrix[n-1-i][j];
matrix[n-1-i][j]=temp;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++){
System.out.print(matrix[i][j]+" ");
}
System.out.println();
}
}