48. Rotate Image ---leetcode算法笔记
2016-06-30 09:16
405 查看
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度,即将数组绕其中心顺时针旋转90度。问题关键在找到数组元素旋转后的坐标位置。可以通过坐标变换将坐标原点变换到数组中心处(数组本身的坐标原点可以看作在0行0列处),这样数组绕原点旋转90度即可。空间复杂度为O(1)。
代码:public void rotate(int[][] matrix) {
int n = matrix.length ;
if(n <= 1) return ;
float center = (float)(n-1)/2;
int x , y ;
int r , c ;
int buffer , temp;
for(int i = 0 ;i <= center ;i ++){
for(int j = 0 ;j < center ;j ++){
r = j ;
c = i ;
buffer = matrix[c][r] ;
for(int k = 0 ;k < 4 ;k ++){
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
思路:顺时针旋转90度,即将数组绕其中心顺时针旋转90度。问题关键在找到数组元素旋转后的坐标位置。可以通过坐标变换将坐标原点变换到数组中心处(数组本身的坐标原点可以看作在0行0列处),这样数组绕原点旋转90度即可。空间复杂度为O(1)。
代码:public void rotate(int[][] matrix) {
int n = matrix.length ;
if(n <= 1) return ;
float center = (float)(n-1)/2;
int x , y ;
int r , c ;
int buffer , temp;
for(int i = 0 ;i <= center ;i ++){
for(int j = 0 ;j < center ;j ++){
r = j ;
c = i ;
buffer = matrix[c][r] ;
for(int k = 0 ;k < 4 ;k ++){
// x = r - center ; // y = c - center ; // x = -y ; // y = x ; // x = x + center ; // y = y + center ; x = (int)(2*center) - c ; y = r ; temp = matrix[y][x] ; matrix[y][x] = buffer ; buffer = temp ; r = x ; c = y ; } } }
相关文章推荐
- php使用Image Magick将PDF文件转换为JPG文件的方法
- ASP.NET中Image控件使用详解
- JavaScript与Image加载事件(onload)、加载状态(complete)
- Track Image Loading效果代码分析
- JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
- js的image onload事件使用遇到的问题
- javascript从image转换为base64位编码的String
- Thinkphp调用Image类生成缩略图的方法
- asp.net显示图片到指定的Image控件中 具体实现
- 分离与继承的思想实现图片上传后的预览功能:ImageUploadView
- Jquery修改image的src属性,图片不加载问题的解决方法
- python使用Image处理图片常用技巧分析
- docker镜像,容器和存储驱动
- Image Upload based on jQuery
- CSS3 3D旋转rotate效果实例介绍
- ASP.NET中Image控件使用详解
- Jquery修改image的src属性,图片不加载问题的解决方法
- 分离与继承的思想实现图片上传后的预览功能:ImageUploadView
- import com.sun.image.codec.jpeg.JPEGCodec;