码迷,mamicode.com
首页 > 其他好文 > 详细

*Rotate Image

时间:2015-07-16 23:53:38      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

 

题目

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?

 

解题思路:

In-place Solution

By using the relation "matrix[i][j] = matrix[n-1-j][i]", we can loop through the matrix.

 

代码如下:

 1 public void rotate(int[][] matrix) {
 2     int n = matrix.length;
 3     for (int i = 0; i < n / 2; i++) {
 4         for (int j = 0; j < Math.ceil(((double) n) / 2.); j++) {
 5             int temp = matrix[i][j];
 6             matrix[i][j] = matrix[n-1-j][i];
 7             matrix[n-1-j][i] = matrix[n-1-i][n-1-j];
 8             matrix[n-1-i][n-1-j] = matrix[j][n-1-i];
 9             matrix[j][n-1-i] = temp;
10         }
11     }
12 }

a=Math.ceil(((double) n) / 2. :
若 n=3, a=2.0;
若 n=4, a=2.0;
若 n=5, a=3.0;
若 n=6, a=3.0;

 

运行过程:

假设图像为

1,2,3           旋转后为:          7,4,1

4,5,6                                   8,5,2

7,8,9                                   9,6,3

 

i=0,j=0

temp=m[0][0]

m[0][0]=m[2][0]=7

m[2][0]=m[2][2]=9

m[2][2]=m[0][2]=3

m[0][2]=temp=1

 

i=0,j=1

temp=m[0][1]

m[0][1]=m[1][0]=4

m[1][0]=m[2][1]=8

m[2][1]=m[1][2]=6

m[1][2]=temp=2

 

reference:http://www.programcreek.com/2013/01/leetcode-rotate-image-java/

*Rotate Image

标签:

原文地址:http://www.cnblogs.com/hygeia/p/4652573.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!