LeetCode48_Rotate Image
来源:互联网 发布:ubuntu的串口调试工具 编辑:程序博客网 时间:2024/06/06 01:55
Rotate Image
问题描述
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.
Example 1:
Given input matrix =
[ [1,2,3], [4,5,6], [7,8,9]],
rotate the input matrix in-place such that it becomes:
[ [7,4,1], [8,5,2], [9,6,3]]
Example 2:
Given input matrix =
[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15,14,12,16]],
rotate the input matrix in-place such that it becomes:
[ [15,13, 2, 5], [14, 3, 4, 1], [12, 6, 8, 9], [16, 7,10,11]]
简单分析
这道题就是把给定的矩阵进行顺时针90度旋转。只是简单的数组操作,但是也有两种解法。
一种解法是直接对数组进行90度旋转赋值,代码如下。
代码
public void rotate(int[][] matrix) { int length = matrix.length; int iMax = length>>1; for(int n=0;n<=iMax;n++){ int l = length-(n<<1); for(int i=0;i<l-1;i++){ //将第一行的数据保留下来 int temp=matrix[n][length-1-n-i]; //将左边旋转移到上边 matrix[n][length-1-n-i]=matrix[i+n][n]; //将底边转移到左边 matrix[i+n][n]=matrix[length-1-n][i+n]; //将右边转移到底边 matrix[length-1-n][i+n]=matrix[length-1-n-i][matrix.length-1-n]; //将上边的值转移到右边 matrix[length-1-n-i][length-1-n]=temp; } } }
另外一种是LeetCode中排名靠前的一种方法,
- 首先对矩阵按照对角线进行镜像处理,
- 然后在按照中轴线进行翻转。
这样得到的也是旋转90度的结果。
读者可以自己实现一下代码,感觉两种算法没有优劣之分,都差不多。
LeetCode学习笔记持续更新。
GitHub地址https://github.com/yanqinghe/leetcode
阅读全文
0 0
- LeetCode48_Rotate Image
- Image
- Image
- Image
- Image
- image
- image
- image
- image
- Image$$
- Image
- image
- image
- Image
- image
- Image
- image
- Image debugger
- android 中c/c++层用到的同步机制
- Android照片墙应用实现,再多的图片也不怕崩溃
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
- NLPIR/ICTCLAS中文分词系统 java相关api文档总结
- 一个Java Jenkins工具类,支持创建,构建,带参数构建,删除JenkinsJob,停止Jenkins Job任务等
- LeetCode48_Rotate Image
- 音频FAAC开源编码库调用
- Java学习笔记(23)--foreach 使用
- Android瀑布流照片墙实现,体验不规则排列的美感
- 安卓文件下载之断点续传(一)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛:Overlapping Rectangles
- Linux创建,删除用户,修改用户组
- BZOJ 3531 [Sdoi2014]旅行 树链剖分 线段树
- maven配置阿里云镜像