旋转矩阵

2020-04-07  本文已影响0人  我知他风雨兼程途径日暮不赏

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-matrix-lcci

1.题目

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。
不占用额外内存空间能否做到?


class Solution {
   
    public void rotate(int[][] matrix) {
       
    }
}

2.JAVA代码

            int tmp = matrix[layer][i];
            matrix[layer][i]=matrix[len-1-i][layer];
            matrix[len-1-i][layer] = matrix[len-layer-1][len-1-i];
            matrix[len-layer-1][len-1-i] = matrix[i][len-layer-1];
            matrix[i][len-layer-1] = tmp;
时间复杂度O(N2),空间复杂度O(1)
class Solution {
   public void rotateLayer(int[][] matrix,int layer){
        int len = matrix.length;
        if(len==0){
            return;
        }

        for(int i=layer;i<(len-layer-1);i++){
            int tmp = matrix[layer][i];
            matrix[layer][i]=matrix[len-1-i][layer];
            matrix[len-1-i][layer] = matrix[len-layer-1][len-1-i];
            matrix[len-layer-1][len-1-i] = matrix[i][len-layer-1];
            matrix[i][len-layer-1] = tmp;
        }
    }

    public void rotate(int[][] matrix) {
        int len = matrix.length;
        if(len==0){
            return;
        }
        for(int i=0;i<len/2;i++){
            rotateLayer(matrix,i);
        }

        return;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读