48. 旋转图像

2019-05-24  本文已影响0人  最困惑的时候就是能成长的时候

48. 旋转图像

1.想法

解:最终将所有矩阵的元素旋转90度

问题:需要旋转90度

方法:先根据对角线旋转,然后根据竖直中线旋转

2.思维过程

1.根据对角线旋转就是转置矩阵根据对角线旋转满足x_iy_j与x_jy_i旋转

2.根据中线旋转就是将x_i x_j旋转,其中i+j=n-1

3.伪代码

1.step one 转置矩阵

for i=0 ->n-1
  for j=i ->n-1
    swap(Xiyj , Xjyi)     

2.step two 中线对折

for i=0->n-1
   for j=0->n/2-1
     swap(xiyj,xiy(n-1-j))

3.代码

 public void rotate(int[][] matrix) {
        //转置矩阵
       for(int i=0;i<matrix.length;i++){
           for(int j=i;j<matrix.length;j++){
               swap(matrix,i,j,j,i);
           }
       }
       //对折矩阵
          for(int i=0;i<matrix.length;i++){
            for (int j=0;j<matrix.length/2;j++){
                swap(matrix,i,j,i,matrix.length-1-j);
            }
        }
    }
     private void swap(int[][] matrix, int i1, int j1, int i2, int j2) {
        int temp = matrix[i1][j1];
        matrix[i1][j1]=matrix[i2][j2];
        matrix[i2][j2]=temp;
    }
上一篇 下一篇

猜你喜欢

热点阅读