【题目】给定一个N*N的矩阵matrix,把这个矩阵调整成顺时针转动90度后的形式。
要求:额外空间复杂度为O(1)
public class Rotate90 {
public static void rotate(int[][] matrix) {
int tC = 0;
int tR = 0;
int dC = matrix.length;
int dR = matrix[0].length;
while (tC < dC) {
rotateEdge(matrix, tC++, tR++, dC--, dR--);
}
}
public static void rotateEdge(int[][] matrix, int tC, int tR, int dC, int 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;
}
}
}