旋转二维数组

旋转二维数组

题目描述
这个题目说的是,给你一个 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 {

  // Time: O(n^2), Space: O(1)
  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;
      }
    }
  }

}

  转载请注明: ForwardXu 旋转二维数组

 上一篇
第 n 个斐波那契数 第 n 个斐波那契数
第 n 个斐波那契数题目描述这个题目说的是,给你一个非负整数 n,你要写一个函数返回第 n 个斐波那契数。其中斐波那契数列最开始的两项是 0 和 1,后面任意一项都是它前面两个数字之和。 比如说,你写的函数是 f,那么就有: f(0) =
2019-02-17
下一篇 
按照顺时针的顺序,逐层遍历并打印N阶方阵 按照顺时针的顺序,逐层遍历并打印N阶方阵
按照顺时针的顺序,逐层遍历并打印N阶方阵问题 逆时针打印矩阵,输入一个矩阵,按照从外向里逆时针的顺序打印出每一个数字。 输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 输出:1 2 3 4 8 12 1
2019-02-15
  目录