48. Rotate Image

来源:互联网 发布:mysql可视化面板 编辑:程序博客网 时间:2024/06/17 05: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?

  • 1.首先找旋转后的第一条规律,设n=4 
        [0][0]->[0][3] 
        [0][3]->[3][3] 
        [1][1]->[1][2] 
        [0][1]->[1][3] 
    可以发现规律[i][j]->[j][n-i-1],不考虑in-place就可以使用该规则完成算法。

  • 2.再找规律,如图所示:把矩阵分成四块发现A位置旋转后成为B,B旋转成为C,C成为D,D成为A。所以利用一个中间值即可满足in-place的约束条件。 

这里写图片描述
对于A区域,0<=i < n/2 并且i<=j
public class Solution {    public void rotate(int[][] a) {        if(a==null || a.length==0) return;        int n=a.length;        for(int i=0;i<n/2;i++){            for(int j=i;j<n-i-1;j++){                int temp=a[i][j];//临时                a[i][j]=a[n-1-j][i];//A=D                a[n-1-j][i]=a[n-1-i][n-1-j];//D=C                a[n-1-i][n-1-j]=a[j][n-1-i];//C=B                a[j][n-1-i]=temp;//B=temp            }        }    }}


0 0
原创粉丝点击