[程序源代码面试指南第二版] 正方形矩阵顺时针旋转90度
需求
矩阵顺时针旋转90°,空间复杂度0(1)
思路
按组交换,左上->右上,右上->右下,右下->左下,左下>左上
附件
代码
public class MATRIX_rotate_circle {
public static void rotate(int[][] matrix) {
int tR = 0;
int tC = 0;
int dR = matrix.length - 1;
int dC = matrix[0].length - 1;
// (tC,tR)
//
// (dR,dC)
while (tR < dR) {
//总的组数
int times= dC-tC;
int tmp=0;
for(int i=0;i<times;i++){
tmp=matrix[tR][tC+i];
matrix[tR][tC+i]=matrix[dR-i][tC];
matrix[dR-i][tC]=matrix[dR][dC-i];
matrix[dR][dC-i]=matrix[tR+i][dC];
matrix[tR+i][dC]=tmp;
}
tR++;
tC++;
dR--;
dC--;
}
// 打印
for(int i =0;i<matrix[0].length;i++){
for(int j=0;j<matrix.length;j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}