You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
如方阵如下所示:
1 2 3
4 5 6
7 8 9
先进行对角线对换:
1 4 7
2 5 8
3 6 9
再进行列对换:
7 4 1
8 5 2
9 6 3
代码如下:
public class RotateImage {
public void rotate(int[][] matrix){
//注意,下面两个的转换顺序不能颠倒
for(int i=0;i<matrix.length;i++){ //先进行对角线对换
for(int j=i+1;j<matrix[0].length;j++){
int temp = 0;
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
for(int i=0;i<matrix.length;i++){ //再进行行对换
for(int j=0;j<matrix.length/2;j++){
int temp = 0;
temp = matrix[i][j];
matrix[i][j] = matrix[i][matrix.length-1-j];
matrix[i][matrix.length-1-j] = temp;
}
}
}
}