LeetCode刷题之HOT100之旋转图像

2024-06-04 12:28

本文主要是介绍LeetCode刷题之HOT100之旋转图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2024/6/4 昨晚在实验室待到很晚才回去,回去看会《万历十五年》就睡了,现在又来了,看了一下昨天做的题目的题解过程,稍微理解了深度优先搜索和回溯思想,那么现在,继续今天的刷题。

1、题目描述

在这里插入图片描述

2、逻辑分析

从数组来到了矩阵,焕然一新的感觉。 看到矩阵旋转,就可以找到规律。
[[1,2,3],[4,5,6],[7,8,9]] 变成 [[7,4,1],[8,5,2],[9,6,3]]规律是显而易见滴。
在这里就可以用一句概括:对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个 位置
那么怎么解决该题呢?用代码来表示就是在 m a t r i x [ r o w ] [ c o l ] matrix[row][col] matrix[row][col] 的元素在旋转后变成 m a t r i x n e w [ c o l ] [ n − r o w − 1 ] matrix_{new}[col][n-row-1] matrixnew[col][nrow1],以此为条件来用代码实现

3、代码演示

public void rotate(int[][] matrix) {// 获取矩阵的行数(也是列数,因为矩阵是方阵)int n = matrix.length;// 创建一个新的二维数组来存储旋转后的结果int [][] newMatrix = new int[n][n];// 遍历原矩阵的每一个元素for(int i = 0; i < n; i++){for(int j = 0; j < n ; j++){// 将原矩阵的元素旋转90度后放到新矩阵的对应位置  // 注意这里j是行索引,n - i - 1是列索引,因为矩阵旋转后,行变成列,列变成行,并且行和列的索引都需要反向 newMatrix[j][n - i - 1] = matrix[i][j];}}// 将新矩阵的值复制回原矩阵,实现原地旋转的效果(但实际上是使用了额外空间的)for(int i = 0; i < n; i++ ){for(int j = 0; j < n; j++){matrix[i][j] = newMatrix[i][j];}}}

理解了规律。实现起来就简单多了,这题还是挺简单的,时间复杂度: O ( N 2 ) O(N^2) O(N2),空间复杂度: O ( N 2 ) O(N^2) O(N2)
欧克,这题先这样,我得做被安排的任务去啦,拜拜!

这篇关于LeetCode刷题之HOT100之旋转图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030081

相关文章

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像