LeetCode-面试题 01.07. 旋转矩阵-中等

LeetCode-面试题 01.07. 旋转矩阵-中等

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

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

示例 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]
]

代码:

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        matrix[:] = map(list, zip(*matrix[::-1])) # matris[::-1]会产生O(N)的临时空间,在使用后会被销毁
        # matrix[::] = zip(*matrix[::-1])
        # matrix[:] = zip(*matrix[::-1])

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        matrix[:] = map(list, zip(*reversed(matrix))) # reversed(matrix)是迭代器,没有额外空间

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        import numpy as np
        matrix[:] = map(list, np.rot90(np.array(matrix, np.object), -1))

发布了231 篇原创文章 · 获赞 54 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/clover_my/article/details/105377103