package way;
public class 矩阵旋转 {
public static void main(String[] args) {
//给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。
// 请你设计一种算法,将图像旋转 90 度。
int[][] matrix= {
{1,2,3},
{4,5,6},
{7,8,9}};
//初始二维数组-读取数组
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
System.out.print(matrix[i][j]+" ");
}
System.out.println(" ");
}
//根据要求执行
//1.根据二维数组的行列元素得到相应的规律(可以先用2*2的矩阵推导,如果2*2的矩阵能够适用这个
公式,可能说明这个公式适用于绝大多数的矩阵)
//1.1很明显,这个数组旋转90度时
/*[0,0]-->[0,1]
[0,1]-->[1,1]
[1,0]-->[0,0]
[1,1]-->[1,0]
原先的[i,j]位数据-->[j,len-i]
*/
//2.创建一个新的二维数组,将旋转后的数组元素添加
int len = matrix.length;
int l = len-1;
int [][]newmatrix=new int[len][len];
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
newmatrix[j][l-i]=matrix[i][j];
}
}
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
matrix[i][j]=newmatrix[i][j];
System.out.print(matrix[i][j]+" ");
}
System.out.println(" ");
}
}
}
可以先用2*2的矩阵推导,如果2*2的矩阵能够适用这个 公式,可能说明这个公式适用于绝大多数的矩阵