LeetCode 面试题 01.07. 旋转矩阵

妖精的绣舞 提交于 2020-04-07 15:56:20

题目

给你一幅由 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;
            }
        }
    }

大家如果感兴趣可以前去手搓

本分类只用作个人记录,大佬轻喷.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!