Java实现 LeetCode 48 旋转图像
48. 旋转图像
给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 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]
]
PS:
假设一个5*5的数组,然后我先旋转四个角的元素,这个很简单,简单排序算法中两个元素交换的延申而已。然后我尝试交换下一组元素,我交换完成外圈元素时,发现了很有规律的现象: 当我们把数组值的行列下标对应到坐标系中时,可以将各元素,看做一个点,那么整个坐标系中有四个点(这里不能贴图,建议在纸上画出来,方便理解)。四个点的规律如下:四个点绝对向一个方向移动,且有一个下标保持不变。
左上角的点,绝对向右移动,
右上角的点,绝对向下移动,
右下角的点,绝对向左移动,
左下角的点,绝对向上移动,
归纳得到有两个固定不变的值,其对应在第一次旋转中,分别是0和matrix.length。
剩余两个变化的值也有规律,分别是两个运动轨迹:从0->matrix.length和从matrix.length->0
提取运动轨迹间的关系,就能通过循环,完成第一圈旋转
开始内圈旋转的时候,变换固定值,约束内圈,返回到开始的思路,继续旋转
class Solution {public void rotate(int[][] matrix) {int abs1 = 0;int abs2 = matrix.length - 1;int times = 0;while (abs1 <= abs2) {int p1 = abs1;int p2 = abs2;while (p1 != abs2) {int temp = matrix[abs1][p1]; //左上matrix[abs1][p1] = matrix[p2][abs1];//左上 = 左下matrix[p2][abs1] = matrix[abs2][p2];//左下 = 右下matrix[abs2][p2] = matrix[p1][abs2];//右下 = 右上matrix[p1][abs2] = temp; //右上 = 左上p1 += 1;p2 -= 1;}abs1 += 1;abs2 -= 1;}}
}
Java实现 LeetCode 48 旋转图像相关推荐
- Leetcode 48. 旋转图像 (每日一题 20210813)
给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度.你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要 使用另一个矩阵来旋转图像.示例 1 ...
- leetcode —— 48. 旋转图像
给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: 示例 2 ...
- leetcode 48. 旋转图像
解题思路 将数组从里到外分为若干层, 数组 [1,2,3], [4,5,6][7,8,9]的最外层即为 [1,2,3] [4 6][7,8,9] ,将一层分为4条边,如741 123,将741放到12 ...
- LeetCode 48 旋转图像
力扣 思路:过程模拟 第一步 矩阵转置 第二步 矩阵矩阵每行逆置 代码 class Solution { public:void zhuanzhi(vector<vector<int> ...
- 每日一道leetcode(python)48. 旋转图像
每日一道leetcode(python)48. 旋转图像 2021-07-27 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像 ...
- LeetCode-笔记-48.旋转图像
LeetCode-笔记-48.旋转图像 1.本人思路 通过观察发现,就是将列数组从下往上组合形成一个新数组,插入到分别的行中. 因此循环次数为matrix.size(): 因此代码思路如下: clas ...
- java求最短距离,Java实现 LeetCode 821 字符的最短距离(暴力)
821. 字符的最短距离 给定一个字符串 S 和一个字符 C.返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组. 示例 1: 输入: S = "loveleet ...
- 【LeetCode笔记】48. 旋转图像(Java、矩阵、偏数学、原地算法)
文章目录 题目描述 代码 & 思路 题目描述 矩阵题,一眼就感觉很烦,直接看了题解= = 因为要求原地旋转,所以只能用temp来做 当然,我们还是要回顾一下矩阵转置的,看看和这道题有啥不同,说 ...
- LeetCode 47全排列Ⅱ48旋转图像
原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...
最新文章
- python 聚类_使用python+sklearn实现聚类性能评估中随机分配对聚类度量值的影响
- 使用OpenCV和Python高效计算视频的总帧数
- 虚拟机在Hyper-V和Citrix Xenserver上的区别
- php调用restful接口_如何使用PHP编写RESTful接口
- mysql注入 xfkxfk_WSS最新版多处SQL注入直接获取数据三(官方demo演示及快速定位漏洞技巧)...
- js事件(事件冒泡与事件捕获)
- python通用权限管理框架图_PyCasbin: 支持 ACL、RBAC、ABAC 多种模型的 Python 权限管理框架...
- Python自然语言处理—停用词词典
- python3 print函数格式化输出
- 电路课组(一)电路原理 Review 1 线性电路分析基础
- 新手学Python要打好哪些基础?从软件安装到全面基础讲解,就它了
- 在网页中嵌入QQ聊天、阿里旺旺聊天、邮件发送等代码
- 解决video标签在部分安卓默认浏览器上的播放样式问题
- python爬虫详解(三)——爬取世界常用密码并保存到字典内
- Error with Permissions-Policy header: Origin trial controlled feature not enabled: ‘interest-cohort‘
- java 判断基本数据类型_判断(1分) Java语言中的数组元素只能是基本数据类型而不能为对象类型。...
- 亿道丨三防平板丨加固平板丨三防工业平板丨航空航天应用
- soul 总是显示登录聊天服务器,用soul聊天莫名其妙被封了号,并没有发广告就被封...
- “我思故我在”——赋值是个大问题
- Android权限说明大全
热门文章
- 第九届河南省程序设计大赛 1273-宣传墙(java)
- Vue.js如何获得兄弟元素,子元素,父元素(DOM操作)
- Python_argparse.Argumentparser()
- WIn10 1909 Windows Hello 指纹:出现错误,请稍后再试一次
- windows 系统netstat -ano查看机器端口占用情况
- 2020腾讯、百度、华为Android面试题校招汇总(已拿offer
- 前端开发中遇到常见问题总结
- win7识别到移动硬盘,但不显示盘符解决办法
- win7计算机自动关机设置在哪里设置方法,win7自动关机怎么设置?W7自动关机命令设置方法...
- 关于PDF文本的解析与PDF图片的提取