zoukankan      html  css  js  c++  java
  • 48. Rotate Image

    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?

    The idea was firstly transpose the matrix and then flip it symmetrically. For instance,

    1  2  3             
    4  5  6
    7  8  9
    

    after transpose, it will be swap(matrix[i][j], matrix[j][i])

    1  4  7
    2  5  8
    3  6  9
    

    Then flip the matrix horizontally. (swap(matrix[i][j], matrix[i][matrix.length-1-j])

    7  4  1
    8  5  2
    9  6  3
        /** No extra space  2 steps*/
        public void rotate(int[][] matrix) {
            int row = matrix.length;
            int col = matrix[0].length;
            for(int i = 0 ; i < row; i++){
                for(int j = i; j < col ; j++){  //对角线
                    int temp = matrix[i][j];
                    matrix[i][j] = matrix[j][i];
                    matrix[j][i] = temp; 
                }
            } // step 1
    
            for(int i = 0 ; i < row; i++){
                for(int j = 0; j < row/2 ; j++){  //col -> row
                    int temp = matrix[i][j];
                    matrix[i][j] = matrix[i][row-1-j];
                    matrix[i][row-1-j] = temp; 
                }
            } // step 2       
            
        }
  • 相关阅读:
    关于高精度的那些事 ~
    LOJ #10002. 喷水装置
    [HAOI2008]糖果传递
    题解 CF1404B 【Tree Tag】
    题解 CF1407E 【Egor in the Republic of Dagestan】
    唯美歌词
    CF做题总结
    CSP2020游记
    数论
    hash好题
  • 原文地址:https://www.cnblogs.com/joannacode/p/6106098.html
Copyright © 2011-2022 走看看