欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 13:08:34
...

问题

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;
            }
        }
    }
相关标签: 矩阵旋转