LeetCode hot100-20

48. 旋转图像给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

这题说了不能用辅助矩阵,但是不辅助我做不出来。还是暴力解了,感觉leetcode一般只检测超时,检测不了开辟辅助空间的情况,所以还是能通过。但是这样肯定不对嘛,看了答案,就是一个数学问题,主要是转来转去数组里的i,j到底是啥子还不好想,以及循环的跳出条件不好想。

先贴一个我的代码

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;int[][] res = new int[n][n];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {res[j][n - i - 1] = matrix[i][j];}}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {matrix[i][j] = res[i][j];}}}
}

官方解法二
一个位置的数要旋转,涉及到包含自身共四个位置的旋转。用一个temp记录下第一个数,然后一次旋转赋值,就不用额外的数组空间了。
循环i<n/2,j<(n+1)/2;这个画一个n为奇数的矩阵就能看出来。循环只需要处理左上角2乘3的一个矩阵,剩下的就已经旋转好了。
旋转四个位置的坐标怎么确定呢,我的方法是选定第一行第二列的小方格。也就是i=0,j=1,要旋转到这个位置的小方块是第四行第一列的小方格,行号为3,列号为0。它怎么用n,i,j表示呢,行号相当于n-j-1=3,列号相当于i=0。一看就是matrix[i][j]=matrix[n-j-1][i];其他的旋转位置同理确定。不是特别好想,但是用特殊法还是可以一次性做对的。

在这里插入图片描述
官方代码

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;for (int i = 0; i < n / 2; ++i) {for (int j = 0; j < (n + 1) / 2; ++j) {int temp = matrix[i][j];matrix[i][j] = matrix[n - j - 1][i];matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];matrix[j][n - i - 1] = temp;}}}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/rotate-image/solutions/526980/xuan-zhuan-tu-xiang-by-leetcode-solution-vu3m/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/571066.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb学习笔记01

一、教程简介 全新JAVAWEB&#xff08;里程碑版&#xff09; 一套更适合后端工程师学习的WEB教程 All in Java 1、后端 ① Spring全家桶及微服务框架 ② 高性能数据库和消息组件 ③ Web攻击防护安全控制手段 ④ 其他第三方SDK生态环境 ...... 2、前端 ① 视图三大件&…

matplotlib调整图片空白

1.线的粗细&#xff0c;标签大小&#xff0c;刻度大小 import matplotlib.pyplot as plt import numpy as np# 生成输入数据 x np.linspace(-6, 6, 100) # 生成 -6 到 6 之间的 100 个数据点 y 1 / (1 np.exp(-x)) # 计算 Sigmoid 函数的输出值# 绘制 Sigmoid 函数曲线 p…

怎么制作iOS证书

首先我们登录appuploder官网 搜索 appuploder 第一个就是我们官网啦&#xff0c;网址是&#xff1a;Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 可以跨平台开发&#xff0c;无论是Windows还是Ma…

公司IT部门的三大职责

IT部门在公司内部该怎么定位呢&#xff1f; 首先&#xff0c;我自己是IT部门的&#xff0c;也接触过很多公司IT部门的同行&#xff0c;似乎都没有一个很统一很明确的定位。有的公司把IT部门定位为技术部门&#xff0c;有的则定位为管理部门&#xff0c;还有的则定位为服务部门…

Pygame基础4-多阶段

4-多阶段 原理 本章是对第2章的延续。 我们希望为游戏添加多个阶段&#xff0c;比如开始界面、游戏界面、结束界面等。 为此&#xff0c;我们可以使用一个类来管理游戏的不同阶段。 我们创建了GameManager类&#xff0c;并通过self.status属性表示不同的阶段。 intro阶段…

I/O(输入/输出流的概述)

文章目录 前言一、流的概述二、输入/输出流 1.字节/字符输入流2.字节/字符输出流总结 前言 在变量、数组和对象中储存的数据是暂时的&#xff0c;程序结束后它们就会丢失。如果想要永久地储存程序创建的数据&#xff0c;需要将其保存在磁盘文件中&#xff0c;这样就可以在程序中…

路径规划——搜索算法详解(三):RRT算法详解与MATLAB代码

本文讲解案例来自于古月学院&#xff0c;该篇也是对笔者学习内容的总结&#xff0c;有需要的朋友可以直接跳转到课程&#xff08;新人福利8节课特惠价才12&#xff01;不是广告哈&#xff0c;大家看需求选择&#xff0c;可以先看我的讲解。&#xff09;。 前两篇我们介绍了Djk…

13.处理指定目录下的所有文件夹里的特定文件

1.命题要求 1&#xff09;对于指定4K_phone目录下&#xff0c;有好几个文件夹&#xff0c;比如quality_15,quality_17,quality_19&#xff0c;等等quality_xx。获取每一个quality_xx文件夹里的1_teacher.txt。 例如&#xff0c;./4K_phone/quality_15/1_teacher.txt、./4K_pho…

基于nodejs+vue饮食分享平台python-flask-django-php

本系统采用了nodejs语言的express框架&#xff0c;数据采用MySQL数据库进行存储。进行开发设计&#xff0c;功能强大&#xff0c;界面化操作便于上手。本系统具有良好的易用性和安全性&#xff0c;系统功能齐全&#xff0c;可以满足饮食分享管理的相关工作。 前端技术&#xff…

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗&#xff1f;为什么 原因&#xff1a;当使用const声明一个对象或数组时&#xff0c;实际上是保证了对象或数组的引用不会被修改&#xff0c;但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…

30---SDRAM电路设计

视频链接 SDRAM电路设计01_哔哩哔哩_bilibili SDRAM电路设计 1、SDRAM简介 SDRAM&#xff1a;Synchronous Dynamic Random Access Memory&#xff0c;同步动态随机存储器。 同步是指其时钟频率和CPU前端总线的系统时钟相同&#xff0c;并且内部命令的发送与数据的传输都以…

设计模式深度解析:深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 ✨

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 开篇&#xff1a; 欢迎来到设计模式的神秘…