给定一个整型正方形矩阵matrix,请把该矩阵调整成 顺时针旋转90度的样子。 【要求】 额外空间复杂度为O(1)。
public class e09rotate {
public static void rotate(int[][] matrix){
int tR=0;
int tC=0;
int dR=matrix.length-1;
int dC=matrix[0].length-1;
while(tR<dR){
rotateEdge(matrix,tR++,tC++,dR--,dC--);
}
printMatrix(matrix);
}
public static void rotateEdge(int[][] m,int tR,int tC,int dR,int dC){
int times=dC-tC;
int tmp=0;
for (int i=0;i<times;i++){
tmp=m[tR][tC+i];
m[tR][tC+i]=m[dR-i][tC];
m[dR-i][tC]=m[dR][dC-i];
m[dR][dC-i]=m[tR+i][dC];
m[tR+i][dC]=tmp;
}
}
public static void printMatrix(int[][] m){
for (int i=0;i<m.length;i++){
for (int j=0;j<m[0].length;j++){
System.out.print(m[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] m={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
rotate(m);
}
}