leetcode_48_旋转图像

孤街浪徒 提交于 2020-02-22 05:03:41

旋转图像

描述

中等

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

示例

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

给定 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]
]

解题

一开始的想法,numpy里有这个函数,直接mat = np.rot90(mat, -1),就行
这样作弊好像不太好

将矩阵顺时针转90度,只需要将原矩阵上下交换,再对角交换即可

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """

        n = len(matrix)
        for i in range(n//2):
            matrix[i], matrix[n-1-i] = matrix[n-1-i], matrix[i]

        for i in range(n):
            for j in range(i, n):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

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