问题:将一个给定的数组,顺时针旋转90度,并打印出来。
public class Test{
public static void rotate(int[][] matrix) {
int LR=0;
int LC=0;
int RR=matrix.length-1;
int RC=matrix[0].length-1;
while(LR<RR) {
rotateEdge(matrix,LR++,LC++,RR--,RC--);
}
}
//旋转的矩阵默认都是正方形的
public static void rotateEdge(int[][] m,int LR,int LC,int RR,int RC) {
int times=RC-LC;//times表示交换位置的次数
int tmp=0;
for(int i=0;i!=times;i++) {
tmp=m[LR][LC+i];
m[LR][LC+i]=m[RR-i][LC];
m[RR-i][LC]=m[RR][RC-i];
m[RR][RC-i]=m[LR+i][RC];
m[LR+i][RC]=tmp;
}
}
public static void printMatrix(int[][] matrix) {
for(int i=0;i<matrix.length;i++) {
for(int j=0;j<matrix[0].length;j++) {
System.out.print(matrix[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] matrix= {{1,2,3},{4,5,6},{7,8,9}};
printMatrix(matrix);
rotate(matrix);
System.out.println();
printMatrix(matrix);
}
}
输出:
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3