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       
            
        }
  • 相关阅读:
    第一阶段-意见评论
    团队冲刺第15天
    团队冲刺第14天
    第十三周进度报告
    团队冲刺第13天
    团队冲刺第12天
    团队冲刺第11天
    SCRUM第二阶段第九天
    SCRUM第二阶段第八天
    SCRUM第二阶段第七天
  • 原文地址:https://www.cnblogs.com/joannacode/p/6106098.html
Copyright © 2011-2022 走看看