当前位置: 首页 > news >正文

【矩阵专题】Leetcode48.旋转图像(Hot100)

目录

  • 旋转矩阵
    • 题目描述
    • 解题思路
      • 第一步:**矩阵转置**
      • 第二步:**左右翻转每一行**
    • Java代码实现
    • 图示理解
    • 时间与空间复杂度分析


旋转矩阵

题目描述

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像原地顺时针旋转 90 度。

示例:

输入:

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

输出:

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

要求必须在原地旋转,也就是说不能使用额外的矩阵。


解题思路

这道题的关键是把 原地旋转这个词吃透。

我们可以将矩阵顺时针旋转 90 度的过程,拆解成两个小步骤:

第一步:矩阵转置

所谓“转置”,就是把矩阵的行列调换,也就是 matrix[i][j] = matrix[j][i]。注意这里只处理对角线的下半部分,避免重复交换。

第二步:左右翻转每一行

这就像镜子一样,将每一行左右调转,matrix[i][j] = matrix[i][n - j - 1]


Java代码实现

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;// 第一步:转置矩阵(沿主对角线翻转)for (int i = 0; i < n; i++) {for (int j = 0; j < i; j++) { // 只交换对角线下方元素int tmp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = tmp;}}// 第二步:左右翻转每一行for (int i = 0; i < n; i++) {for (int j = 0; j < n / 2; j++) {int tmp = matrix[i][j];matrix[i][j] = matrix[i][n - j - 1];matrix[i][n - j - 1] = tmp;}}}
}

图示理解

原始矩阵:

1 2 3  
4 5 6  
7 8 9

转置后:

1 4 7  
2 5 8  
3 6 9

左右翻转后(最终结果):

7 4 1  
8 5 2  
9 6 3

时间与空间复杂度分析

  • 时间复杂度: O(n²),需要遍历两次数组。
  • 空间复杂度: O(1),原地操作,没有使用额外空间。
http://www.dtcms.com/a/297137.html

相关文章:

  • leetcode_122 买卖股票的最佳时机II
  • STM32与ADS1220实现多通道数据采集的完整分析和源程序
  • Comfyui中Upscale Image By 几种放大方法的区别
  • Java研学-RabbitMQ(三)
  • Centos7安装rabbitmq
  • RabbitMQ—HAProxy负载均衡
  • React性能优化终极指南:memo、useCallback、useMemo全解析
  • Ubuntu22 上,用C++ gSoap 创建一个简单的webservice
  • NineData 数据库 DevOps 全面支持 GaussDB,国产化管理再升级!
  • Spring Boot 自动装配底层源码实现详解
  • 国产DevOps平台Gitee:如何重塑中国企业研发效能新格局
  • Java 单元测试详解:从入门到实战,彻底掌握 JUnit 5 + Mockito + Spring Boot 测试技巧
  • react中 多个层级 组件数据同用 组件之间传值 usecontext useReducer
  • Gitee如何成为国内企业DevOps转型的首选平台?
  • 璞致 PZSDR-P101:ZYNQ7100+AD9361 架构软件无线电平台,重塑宽频信号处理范式
  • ERNIE-4.5-0.3B 实战指南:文心一言 4.5 开源模型的轻量化部署与效能跃升
  • 规则分配脚本
  • 初识JVM--从Java文件到机器指令
  • 中国开源Qwen3 Coder与Kimi K2哪个最适合编程
  • “磁”力全开:钕铁硼重塑现代科技生活
  • Linux 网络与 Vim 编辑器操作
  • 3D实景的概念、特点及应用场景
  • 从“人工眼”到‘智能眼’:EZ-Vision视觉系统如何重构生产线视觉检测精度?
  • AI与区块链融合:2025年的技术革命与投资机遇
  • C++与Hive、Spark、libhdfs、ACID交互技巧
  • Vue2下
  • VR 技术在污水处理领域的创新性应用探索​
  • C++ string:准 STL Container
  • 【03】C#入门到精通——C# 输出格式、内容拼接、if判断 、bool 表达式、函数封装调用
  • 【深度学习优化算法】09:Adadelta算法