其他分享
首页 > 其他分享> > LeetCode 面试题 01.07. 旋转矩阵

LeetCode 面试题 01.07. 旋转矩阵

作者:互联网

题目

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

将图像旋转 90 度。不占用额外内存空间能否做到?

示例

给定 矩阵
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
],

原地旋转输入矩阵,使其变为:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

思路:先将其写斜对角线翻折,再对每行以中点为中心翻折

  [1,2,3],        [1,4,7],            [7,4,1],
  [4,5,6],  ===>  [2,5,8],    ===>    [8,5,2],
  [7,8,9]         [3,6,9]             [9,6,3]

代码

public void rotate(int[][] matrix) {
        for(int i=0; i<matrix.length; i++){
            for(int j=i+1; j<matrix[0].length; j++){
                int t = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = t;
            }
        }

        int n = matrix.length;
        int mid = n/2;
        for(int i=0; i<matrix.length; i++){
            for(int j=0; j<mid; j++){
                int t = matrix[i][j];
                matrix[i][j] = matrix[i][n-j-1];
                matrix[i][n-j-1] = t;
            }
        }
    }

标签:面试题,int,翻折,矩阵,旋转,图像,01.07,LeetCode
来源: https://www.cnblogs.com/xiaofff/p/12653434.html