题目链接:rotate-image
矩阵原地旋转90度
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?
*
*/
public class RotateImage {
// 20 / 20 test cases passed.
// Status: Accepted
// Runtime: 181 ms
// Submitted: 1 minute ago
static void rotate(int[][] matrix) {
int n = matrix.length - 1;
for(int i = 0; i <= n / 2; i ++)
for(int j = i; j < n - i; j ++) {
//旋转四个位置相同的点
//旋转前的位置关系
// ( i j) . . . ( j n-i)
// . .
// . .
// . .
// (n-j i) . . . (n-i n-j)
int temp1 = matrix[i][j];
matrix[i][j] = matrix[n - j][i];
matrix[n - j][i] = matrix[n - i][n - j];
matrix[n - i][n - j] = matrix[j][n - i];
matrix[j][n - i] = temp1;
//旋转后的位置关系
// (n-j i ) . . . ( i j )
// . .
// . .
// . .
// (n-i n-j) . . . ( j n-i)
}
}
public static void main(String[] args) {
int[][] matrix = {{1,2}, {3, 4}};
rotate(matrix);
for(int i = 0; i < matrix.length; i ++)
System.out.println(Arrays.toString(matrix[i]));
}
}原文:http://blog.csdn.net/ever223/article/details/44539901