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 旋转图像相关推荐

  1. Leetcode 48. 旋转图像 (每日一题 20210813)

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

  2. leetcode —— 48. 旋转图像

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

  3. leetcode 48. 旋转图像

    解题思路 将数组从里到外分为若干层, 数组 [1,2,3], [4,5,6][7,8,9]的最外层即为 [1,2,3] [4 6][7,8,9] ,将一层分为4条边,如741 123,将741放到12 ...

  4. LeetCode 48 旋转图像

    力扣 思路:过程模拟 第一步 矩阵转置 第二步 矩阵矩阵每行逆置 代码 class Solution { public:void zhuanzhi(vector<vector<int> ...

  5. 每日一道leetcode(python)48. 旋转图像

    每日一道leetcode(python)48. 旋转图像 2021-07-27 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像 ...

  6. LeetCode-笔记-48.旋转图像

    LeetCode-笔记-48.旋转图像 1.本人思路 通过观察发现,就是将列数组从下往上组合形成一个新数组,插入到分别的行中. 因此循环次数为matrix.size(): 因此代码思路如下: clas ...

  7. java求最短距离,Java实现 LeetCode 821 字符的最短距离(暴力)

    821. 字符的最短距离 给定一个字符串 S 和一个字符 C.返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组. 示例 1: 输入: S = "loveleet ...

  8. 【LeetCode笔记】48. 旋转图像(Java、矩阵、偏数学、原地算法)

    文章目录 题目描述 代码 & 思路 题目描述 矩阵题,一眼就感觉很烦,直接看了题解= = 因为要求原地旋转,所以只能用temp来做 当然,我们还是要回顾一下矩阵转置的,看看和这道题有啥不同,说 ...

  9. LeetCode 47全排列Ⅱ48旋转图像

    原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...

最新文章

  1. python 聚类_使用python+sklearn实现聚类性能评估中随机分配对聚类度量值的影响
  2. 使用OpenCV和Python高效计算视频的总帧数
  3. 虚拟机在Hyper-V和Citrix Xenserver上的区别
  4. php调用restful接口_如何使用PHP编写RESTful接口
  5. mysql注入 xfkxfk_WSS最新版多处SQL注入直接获取数据三(官方demo演示及快速定位漏洞技巧)...
  6. js事件(事件冒泡与事件捕获)
  7. python通用权限管理框架图_PyCasbin: 支持 ACL、RBAC、ABAC 多种模型的 Python 权限管理框架...
  8. Python自然语言处理—停用词词典
  9. python3 print函数格式化输出
  10. 电路课组(一)电路原理 Review 1 线性电路分析基础
  11. 新手学Python要打好哪些基础?从软件安装到全面基础讲解,就它了
  12. 在网页中嵌入QQ聊天、阿里旺旺聊天、邮件发送等代码
  13. 解决video标签在部分安卓默认浏览器上的播放样式问题
  14. python爬虫详解(三)——爬取世界常用密码并保存到字典内
  15. Error with Permissions-Policy header: Origin trial controlled feature not enabled: ‘interest-cohort‘
  16. java 判断基本数据类型_判断(1分) Java语言中的数组元素只能是基本数据类型而不能为对象类型。...
  17. 亿道丨三防平板丨加固平板丨三防工业平板丨航空航天应用
  18. soul 总是显示登录聊天服务器,用soul聊天莫名其妙被封了号,并没有发广告就被封...
  19. “我思故我在”——赋值是个大问题
  20. Android权限说明大全

热门文章

  1. 第九届河南省程序设计大赛 1273-宣传墙(java)
  2. Vue.js如何获得兄弟元素,子元素,父元素(DOM操作)
  3. Python_argparse.Argumentparser()
  4. WIn10 1909 Windows Hello 指纹:出现错误,请稍后再试一次
  5. windows 系统netstat -ano查看机器端口占用情况
  6. 2020腾讯、百度、华为Android面试题校招汇总(已拿offer
  7. 前端开发中遇到常见问题总结
  8. win7识别到移动硬盘,但不显示盘符解决办法
  9. win7计算机自动关机设置在哪里设置方法,win7自动关机怎么设置?W7自动关机命令设置方法...
  10. 关于PDF文本的解析与PDF图片的提取