LeetCode 48 Rotate Image
来源:互联网 发布:工资条制作软件 编辑:程序博客网 时间:2024/05/16 06:49
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
首先想到的是纯模拟,所有的元素都相当于是围绕矩阵正中心的点进行旋转90°,等价于所有的点matrix[i][j] = matrix[n - j - 1][i]。每个元素要90°挪动,相当于270°挪到0°,180°挪到270°,90°挪到180°,0°挪到90°。顺便再看看图,图中1号区域到2号,2号到3号,3号到4号,4号到1号,,还是直接看代码吧。
public void rotate(int[][] matrix) {int n = matrix.length;for (int i = 0; i < n / 2; i++) {for (int j = i; j < n - i - 1; 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;}}}
还有一个方式,先沿着副对角线旋转一次,再沿着水平中线旋转以此,即可达到目的。因为沿着副对角线旋转,相当于matrix[i][j] = matrix[n - 1 - j][n - i - 1],但是我们的目的是matrix[i][j] = matrix[n - j - 1][i]才可以达到垂直旋转的效果,因此需要再进行处理,进行水平中线旋转,matrix[i][j] = matrix[n - 1 - i][j],即可达到效果。
代码如下:
public void rotate2(int[][] matrix) {int n = matrix.length;for (int i = 0; i < n; i++)for (int j = 0; j < n - i; j++) {int tmp = matrix[i][j];matrix[i][j] = matrix[n - 1 - j][n - i - 1];matrix[n - 1 - j][n - i - 1] = tmp;}for (int i = 0; i < n / 2; i++)for (int j = 0; j < n; j++) {int tmp = matrix[i][j];matrix[i][j] = matrix[n - 1 - i][j];matrix[n - 1 - i][j] = tmp;}}
0 0
- [leetcode 48] Rotate Image
- [LeetCode 48]Rotate Image
- leetcode || 48、Rotate Image
- leetcode-48 Rotate Image
- Rotate Image - LeetCode 48
- Leetcode 48: Rotate Image
- Leetcode #48 Rotate Image
- LeetCode(48) Rotate Image
- leetcode 48: Rotate Image
- Leetcode#48||Rotate Image
- leetcode 48:Rotate Image
- 【leetcode】【48】Rotate Image
- Leetcode 48 - Rotate Image
- LeetCode 48 - Rotate Image
- 【LeetCode-48】Rotate Image
- LeetCode 48 Rotate Image
- Leetcode 48 Rotate Image
- [Leetcode] #48 Rotate Image
- srand,rand随机数发生器函数的使用
- git的常用命令
- 如何把妹子拍得更好看?
- Spring整合JMS(三)-MessageConverter介绍
- android启动过程之init.rc文件浅析
- LeetCode 48 Rotate Image
- iOS 编译openssl
- 有关io/cpu/内存
- Android四大组件之BroadcastReceiver详细解析
- iOS 让scrollView 上面的textField消退键盘
- XSS姿势——文件上传XSS
- EDA学习FAQ
- Spring Web MVC中的页面缓存支持
- Spring.Net 简单入门学习