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

server/2024/10/22 15:41:00/

题目:
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 == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000

解题思路:
首先,转置这个matrix。

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

转置后变成:

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

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

[[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

http://www.ppmy.cn/server/130255.html

相关文章

研发中台拆分之路:深度剖析、心得总结与经验分享

背景在 21 年&#xff0c;中台拆分在 21 年&#xff0c;以下为中台拆分的过程心得&#xff0c;带有一定的主观&#xff0c;偏向于中小团队中台建设参考&#xff08;这里的中小团队指 3-100 人的团队&#xff09;&#xff0c;对于大型团队不太适用&#xff0c;毕竟大型团队人中 …

【自用】计算机网络湖科大教书匠笔记 第二章 物理层

文章目录 物理层的基本概念物理层下面的传输媒体传输方式编码与调制信道的极限容量 物理层的基本概念 传输媒体&#xff1a; 导引型传输媒体&#xff1a;双绞线、同轴电缆、光纤。非导引型传输媒体&#xff1a;微波通信、 物理层考虑的是怎样才能在连接各种计算机的传输媒体…

中阳:金融市场中的稳健投资平台

在充满不确定性的全球金融市场中&#xff0c;投资者需要一个既稳健又灵活的平台来应对各种市场挑战。中阳凭借其丰富的市场经验、先进的技术平台和广泛的投资产品&#xff0c;成为了无数投资者信赖的金融合作伙伴。本文将详细介绍中阳的核心优势&#xff0c;帮助投资者在复杂的…

java的Maven项目的ehcache缓存学习记录

java的ehcache缓存学习记录 第1步:pom.xml增加ehcache的依赖项 <!--ehcache缓存--><dependency><groupId>net.sf.ehcache</groupId</

天池x优酷 大模型微调赛事学习

https://www.datawhale.cn/learn/content/27/635

Rust-结构体

Rust-结构体 结构体是一种可支持我们进行自定义的数据类型&#xff0c;它允许我们可以把多个相关联的值进行打包&#xff0c;组成一个有意义的组合&#xff0c;并取一个新的名字。 一、结构体语法 1. 如何定义一个结构体&#xff1f; 使用struct关键字&#xff0c;并为整个…

活动队列

时间片还没有结束的所有进程都按照优先级放在该队列 nr_active: 总共有多少个运行状态的进程 queue[140]: 一个元素就是一个进程队列&#xff0c;相同优先级的进程按照FIFO规则进行排队调度,所以&#xff0c;数组下标就是优先级&#xff01; 从该结构中&#xff0c;选择一个最…

(功能测试)熟悉web项目及环境 测试流程

1.环境&#xff1f;有没有考虑过什么是环境&#xff1f; web网站为什么能打开&#xff1f; &#xff08;是因为他的服务器已经在运行了&#xff0c;网站服务器相关环境已部署及运行&#xff09; 所以什么是环境&#xff1f; 环境&#xff1a;就是项目运行所需要的软件及硬件组合…