力扣经典150题第三十六题:旋转图像

ops/2024/9/25 10:31:24/

目录

  • 力扣经典150题第三十六题:旋转图像
    • 引言
    • 题目详解
    • 解题思路
    • 代码实现
    • 示例演示
    • 复杂度分析
    • 总结
    • 扩展阅读

力扣经典150题第三十六题:旋转图像

引言

本篇博客介绍了力扣经典150题中的第三十六题:旋转图像。题目要求将给定的 n × n 二维矩阵顺时针旋转90度,并要求在原地进行修改。

题目详解

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 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]]

解题思路

要将矩阵顺时针旋转90度,可以分为两个步骤:

  1. 先进行矩阵的转置操作,即将矩阵的行列互换。
  2. 然后对转置后的矩阵进行每行元素的反转。

通过这两个步骤可以实现顺时针旋转90度的效果。

代码实现

public class RotateImage {public void rotate(int[][] matrix) {int n = matrix.length;// Step 1: Transpose the matrixfor (int i = 0; i < n; i++) {for (int j = i; j < n; j++) {int temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}// Step 2: Reverse each rowfor (int i = 0; i < n; i++) {for (int j = 0; j < n / 2; j++) {int temp = matrix[i][j];matrix[i][j] = matrix[i][n - 1 - j];matrix[i][n - 1 - j] = temp;}}}public static void main(String[] args) {RotateImage solution = new RotateImage();// 示例测试int[][] matrix1 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};System.out.println("输入矩阵1:");printMatrix(matrix1);solution.rotate(matrix1);System.out.println("顺时针旋转90度后的矩阵1:");printMatrix(matrix1);int[][] matrix2 = {{5, 1, 9, 11}, {2, 4, 8, 10}, {13, 3, 6, 7}, {15, 14, 12, 16}};System.out.println("输入矩阵2:");printMatrix(matrix2);solution.rotate(matrix2);System.out.println("顺时针旋转90度后的矩阵2:");printMatrix(matrix2);}private static void printMatrix(int[][] matrix) {for (int[] row : matrix) {System.out.println(Arrays.toString(row));}System.out.println();}
}

示例演示

展示了两个不同规模的矩阵输入,并输出了顺时针旋转90度后的结果。
在这里插入图片描述

复杂度分析

该解法的时间复杂度为 O(n^2),其中 n 是矩阵的大小(行数或列数)。空间复杂度为 O(1),除了存储结果的列表外,没有使用额外的空间。

总结

本篇博客介绍了如何实现顺时针旋转90度的矩阵操作,并给出了具体的解题思路和代码实现。希望对你有所帮

助!

扩展阅读

  • 力扣官方题解 - 旋转图像

http://www.ppmy.cn/ops/10651.html

相关文章

js自动缩放页面,html自动缩放页面,大屏自动缩放页面,数字看板自动缩放页面,大数据看板自动缩放页面

js自动缩放页面&#xff0c;html自动缩放页面&#xff0c;大屏自动缩放页面&#xff0c;数字看板自动缩放页面&#xff0c;大数据看板自动缩放页面 由纯JS实现 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"…

RAID10如何创建?RAID10做法详细说明

RAID10创建步骤主要有7步&#xff1a;1.硬件准备&#xff1b;2.配置RAID卡或存储设备&#xff1b;3.选择RAID级别&#xff1b;4.添加硬盘到RAID 10组&#xff1b;5.添加硬盘到RAID 10组&#xff1b;6.保存并退出配置&#xff1b;7. 初始化RAID 10阵列。 RAID 10&#xff0c;也…

CP6350-1008-0020倍福工控机主板维修Beckhoff工业机器人主机电脑深圳捷达工控维修

在工业自动化领域&#xff0c;倍福工控机主板以其卓越的稳定性和高效性能&#xff0c;广泛应用于各种控制系统。然而&#xff0c;即便是高质量的硬件设备&#xff0c;也难免会出现故障。CP6350-1008-0020倍福工控机主板维修&#xff0c;就是针对这一型号主板可能出现的各种问题…

用对方法统计系统信息宣传向媒体投稿发文章并不难

在我刚接手单位信息宣传工作之初,面对繁复且关键的任务——定期向各类媒体投稿并发表宣传稿件,心中既有忐忑也有期待。然而,实践的过程却并非一帆风顺。初阶段,我像一只无头苍蝇般四处碰壁,对如何便捷地找到适合的媒体平台、正确递交稿件感到迷茫与困惑。每天,我花费大量的时间…

道一云受邀参加《低代码开发平台通用技术要求》国家标准启动会。

近日,广东道一信息技术股份有限公司(以下简称:道一云)受邀在济南参加“低代码开发平台通用技术要求国家标准启动会暨软件与系统工程标准会议周”活动。 本次活动由全国信标委软件与系统工程分委会(以下简称“软工分委会”)主办,浪潮通用软件有限公司承办,道一云作为低代码领域…

javax.net.ssl.SSLHandshakeException: No appropriate protocol

cd /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/home/jre/lib/security sudo vi java.security 删掉下面的三个配置,然后重启应用即可

python借助elasticsearch实现标签匹配计数

给定一组标签 [{“tag_id”: “1”, “value”: “西瓜”}, {“tag_id”: “1”, “value”: “苹果”}]&#xff0c;我想精准匹配到现有的标签库中存在的标签并记录匹配成功的数量。 标签id(tag_id)标签名(tag_name)标签值(tag_name )1水果西瓜1水果苹果1水果橙子2动物老虎 …

Python网络爬虫项目开发实战:怎么解决表单交互

注意&#xff1a;本文的下载教程&#xff0c;与以下文章的思路有相同点&#xff0c;也有不同点&#xff0c;最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程&#xff1a;Python网络爬虫项目开发实战_表单交互_编程案例解析实例详解课程教程.pdf Python网络爬虫项目开…