https://oj.leetcode.com/problems/rotate-image/
http://blog.csdn.net/linhuanmars/article/details/21503683
Public class solution { // assume it is a n * n. public void rotate (Int[][] matrix) { // Solution A: // rotate_extramatrix (Matrix); // Solution B: rotate_tworotate (Matrix); } //////////////////// // Solution A: ExtraMatrix // private void rotate_extramatrix (Int[][] matrix) { int len = Matrix.length; int[][] toreturn = new int[len][len]; // Rotate for (int i = 0 ; i < len ; i ++) { for (int j = 0 ; j < len ; j ++) { toreturn[i][j] = matrix[len - 1 - j][i]; } } Copy for (int i = 0 ; i < len ; i ++) { for (int j = 0 ; j < len ; j ++) { &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;MATRIX[I][J] = toReturn[i][j]; } } } ////////////////// // Solution B: TwoRotate // private void rotate_tworotate (Int[][] matrix) { // aaaaa // bbbbb // ccccc / / // => // CCCCC // BBBBB // AAAAA int len = matrix.length; int mid = len / 2; for (int i = 0 ; i < len ; i ++) { for (int j = 0 ; j < mid ; j ++) { int temp = matrix[len - 1 - j][i]; matrix[len - 1 - j][i] = matrix[j][i]; matrix[j][i] = temp; } } // swap corner // m a A A // B M A A &Nbsp; // b b m a // b b B M // // => // M B B B // A M B B // a a m b // a a a M for (int j = 0 ; j < len ; j ++) { for (int i = 0 ; i < j ; i ++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } } }
[Leetcode]48 Rotate Image