旋转二维数组

题目描述
这个题目说的是,给你一个 n x n 的二维数组,你要沿顺时针方向将它旋转 90 度。要求你不能使用额外的存储空间,就地在原数组操作。

比如说,给你的二维数组是:

1, 2, 3
4, 5, 6
7, 8, 9

顺时针旋转 90 度后,得到的二维数组是:

7, 4, 1
8, 5, 2
9, 6, 3

代码

public class AlgoCasts {

  
  public void rotate(int[][] matrix) {
    if (matrix == null || matrix.length == 0 ||
      matrix[0] == null || matrix[0].length == 0)
      return;
    int n = matrix.length;
    for (int i = 0; i < n; ++i) {
      for (int j = i; j < n; ++j) {
        int tmp = matrix[i][j];
        matrix[i][j] = matrix[j][i];
        matrix[j][i] = tmp;
      }
    }
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n/2; ++j) {
        int tmp = matrix[i][j];
        matrix[i][j] = matrix[i][n-1-j];
        matrix[i][n-1-j] = tmp;
      }
    }
  }

}