矩阵旋转90度

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。

矩阵旋转90度 由两个步骤组成:

1 矩阵转置

由“线性代数”知识可知:矩阵转置公式: matrix[i][j] = matrix[j][i]

2 交换列元素

假设一共有 len 列,第 column 列与第 len-column-1 列作交换。

class Solution {
    public void rotate(int[][] matrix) {
        //矩阵转置
        trans(matrix);
        //交换列
        swapColumn(matrix);
    }

    private void trans(int[][] matrix){
        int len = matrix.length;
        int tmp;
        for(int i = 0; i < len; i++){
            for(int j = i; j < len; j++){
                tmp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = tmp;
            }
        }
    }

    private void swapColumn(int[][] matrix){
        int len = matrix.length;
        int tmp;
        for(int column =0; column < len/2; column++){
            for(int row = 0; row < len; row++){
                tmp = matrix[row][column];
                matrix[row][column] = matrix[row][len-column-1];
                matrix[row][len-column-1] = tmp;
            }  
        }
    }
}

leetcode 链接:https://leetcode-cn.com/problems/rotate-image/

posted @ 2023-02-19 22:26  大熊猫同学  阅读(541)  评论(0编辑  收藏  举报