数据—将一个N*N矩阵顺时针旋转90度

  • Post author:
  • Post category:其他




问题

1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针180度,或者逆时针90度都一样的思路),不占用额外空间



实现

按照规律一层一层逐个进行旋转

/**
     * 1.6 问题:将一个N*N矩阵顺时针旋转90度(其他形如顺时针180度,或者逆时针90度都一样的思路),不占用额外空间
     * 思路:一层一层逐个进行旋转
     * time:o(n^2)
     * space:o(1)
     */
    public static void rotate(int[][] matrix, int n){
        for(int layer = 0; layer < n/2; layer++){
            int first = layer;
            int last = n - 1 - layer;
            for(int i = first; i < last; i++){
                int offset = i - first;
                // 存储左上边元素
                int top = matrix[first][i];
                // 左到上
                matrix[first][i] = matrix[last-offset][first];
                // 下到左
                matrix[last-offset][first] = matrix[last][last-offset];
                // 右到下
                matrix[last][last-offset] = matrix[i][last];
                // 上到右
                matrix[i][last] = top;
            }
        }
    }



版权声明:本文为Kaiyang_Shao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。