import java.util.Arrays;
/**
* 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?
翻转二维数组,思路是把数组分成length/2层,每层分别翻转,左边的到上边,下边的到左边,右边的到下边,上边的到右边
每层也有一个循环,设置一个中间量,这层的数一个一个交换,注意每层循环的次数(就是这层每条边的数量-1)
*/
public class Q48RotateImage {
public static void main(String[] args) {
int[][] matrix = new int[][]{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
rotate(matrix);
for (int[] num :
matrix) {
System.out.println(Arrays.toString(num));
}
}
public static void rotate(int[][] matrix) {
int temp;
int l = matrix.length;
for (int i = 0; i < l / 2; i++) {
for (int j = 0; j < l-1-(2*i); j++) {
temp = matrix[i][i+j];
matrix[i][i+j] = matrix[l-1-i-j][i];
matrix[l-1-i-j][i] = matrix[l-1-i][l-1-i-j];
matrix[l-1-i][l-1-i-j] = matrix[i+j][l-1-i];
matrix[i+j][l-1-i] = temp;
}
}
}
}