面试题 01.07. 旋转矩阵

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

不占用额外内存空间能否做到?

题解:

1.N × N 矩阵

2.对矩阵中每个元素旋转90度

3.不占用额外内存空间怎么做?

示例 1:

给定 matrix = 

[ [1,2,3],

  [4,5,6],

  [7,8,9]],

原地旋转输入矩阵,使其变为:

[ [7,4,1],

  [8,5,2],

  [9,6,3]]

示例 2:

给定 matrix =

[ [ 5, 1, 9,11],

  [ 2, 4, 8,10],

  [13, 3, 6, 7],

  [15,14,12,16]], 

原地旋转输入矩阵,使其变为:

[ [15,13, 2, 5],

  [14, 3, 4, 1],

  [12, 6, 8, 9],

  [16, 7,10,11]]

 

解题思路:

思路一:先对角置换,再中心行对换

C/C++题解(点击蓝字阅读源码,或前往公众号回复“01.07”获取)

class Solution {

public:

    void rotate(vector<vector<int>>& matrix) {

面试题 01.07. 旋转矩阵

Java题解(点击蓝字阅读源码,或前往公众号回复“01.07”获取)

class Solution {

    public void rotate(int[][] matrix) {

面试题 01.07. 旋转矩阵

Python题解(点击蓝字阅读源码,或前往公众号回复“01.07”获取)

class Solution(object):

    def rotate(self, matrix):

        """:type matrix: List[List[int]]"""

面试题 01.07. 旋转矩阵

例题来自力扣网https://leetcode-cn.com/

思路二:转圈圈(点击蓝字阅读源码,或前往公众号回复“01.07”获取)

class Solution(object):

    def rotate(self, matrix):

        """:type matrix: List[List[int]]"""

                #遍历到一个元素时,则把旋转90度所在位置上4个同位元素

                #同时旋转到对应位置上,这样只需遍历中心行以上元素

面试题 01.07. 旋转矩阵

思路三:额外开辟一个数组写入旋转后的元素(点击蓝字阅读源码,或前往公众号回复“01.07”获取)

class Solution(object):

    def rotate(self, matrix):

        """:type matrix: List[List[int]]"""

        #设置一个额外的辅助序列也是可行的

                #先遍历元素写到旋转后的位置上

        #在对原序列重新赋值一遍

面试题 01.07. 旋转矩阵

更多题解可前往公众号免费获取

面试题 01.07. 旋转矩阵

相关文章:

  • 2021-08-15
  • 2022-12-23
  • 2021-12-12
  • 2021-12-12
  • 2022-01-08
  • 2021-04-21
猜你喜欢
  • 2021-10-21
  • 2022-12-23
  • 2021-05-26
  • 2022-12-23
  • 2021-05-16
相关资源
相似解决方案