LeetCode 48 Rotate Image 解题思路和python代码

题目:

You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).

You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.

Example 1:

Input: matrix = \[1,2,3,4,5,6,7,8,9]

Output: \[7,4,1,8,5,2,9,6,3]

Example 2:

Input: matrix = \[5,1,9,11,2,4,8,10,13,3,6,7,15,14,12,16]

Output: \[15,13,2,5,14,3,4,1,12,6,8,9,16,7,10,11]

Constraints:

n == matrix.length == matrixi.length

1 <= n <= 20

-1000 <= matrixij <= 1000

解题思路:

首先,转置这个matrix。

bash 复制代码
[[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]]

转置后变成:

bash 复制代码
[[1, 4, 7],
 [2, 5, 8],
 [3, 6, 9]]

接着,把 matrix 中的每一行都reverse。

bash 复制代码
[[7, 4, 1],
 [8, 5, 2],
 [9, 6, 3]]

完成将 matrix 旋转90°。

转置矩阵的 time complexity 是O(n^2),

reverse矩阵中每一行的 time complexity 也是 O(n^2)。

整体的 time complexity 是O(n^2)。

space complexity 是 O(1)。

python 复制代码
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):
            for j in range(i, n):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

        for i in range(n):
            matrix[i].reverse()

        return matrix
相关推荐
ting94520003 小时前
Humalike X Hermes 深度技术剖析:单指令注入群聊社交智能的底层架构、算法与跨 IM 平台实现
人工智能·算法·架构
Data_Journal3 小时前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy
吴声子夜歌3 小时前
Java面试——算法
java·算法·面试
evans在进步4 小时前
LeetCode 64:最小路径和——Java 原地动态规划详解
java·leetcode·动态规划
豆角焖肉4 小时前
SSM 聚合项目搭建:多 Maven 模块项目
开发语言·python·pycharm
h_a_o777oah4 小时前
【图论】Tarjan 缩点:解决有向图中环的问题
c++·算法·图论·acm·强连通分量·缩点·tarjan
Tisfy4 小时前
LeetCode 1386.安排电影院座位:哈希表+位运算
算法·leetcode·散列表·题解·哈希表
青 春 记 忆4 小时前
零基础入门python20:Flask配置、扩展和蓝图拆分
python·flask·后端开发
Nil2085 小时前
leetcode 199二叉树的右视图
算法·leetcode·深度优先
m0_380743875 小时前
为 OpenAI 兼容接口配置教程
开发语言·python·node.js