• [leedcode 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?

    In order to fulfill the follow up requirement,  i.e. in-place, we should utilize a temporary int variable and switch the values in the matrix.  Coming back to our problem, rotating a matrix can be divided into steps and each step responses to rotating specific layer of the matrix.  For example, when n=6 there are n/2 = 3 steps from outside layers to inside layers.

    public class Solution {
        /*public void rotate(int[][] matrix) {
            //本题一定要注意边界。每一层循环代表反转一层(从外到内循环),一共有len/2层。注意j的取值,j>=i,j<len-i-1;
            
            int len=matrix.length;
            for(int i=0;i<len/2;i++){
                for(int j=i;j<len-i-1;j++){
                    int temp=matrix[i][j];
                    matrix[i][j]=matrix[len-1-j][i];
                    matrix[len-1-j][i]=matrix[len-1-i][len-1-j];
                    matrix[len-1-i][len-1-j]=matrix[j][len-i-1];
                    matrix[j][len-i-1]=temp;
                    
                } 
            }
        }*/
        
        
        public void rotate(int[][] matrix) {
            //本题的另一种解法,首先沿着水平中线翻转一次,然后沿着主对角线,翻转一次,最终能够实现顺时针旋转90度
            //或者,首先沿着副对角线翻转一次,然后沿着水平中线翻转一次。
            int len=matrix.length;
            int i=0;
            int j=0;
            for(;i<len/2;i++){
                for(j=0;j<len;j++){
                    int temp=matrix[i][j];
                    matrix[i][j]=matrix[len-1-i][j];
                    matrix[len-1-i][j]=temp;
                    
                }
            }
            for(i=0;i<len;i++){
                for(j=i+1;j<len;j++){
                    int temp=matrix[i][j];
                    matrix[i][j]=matrix[j][i];
                    matrix[j][i]=temp;
                 
                }
            } 
            
        }
    }
  • 相关阅读:
    元素和容器, Model and View
    KeyboardHook in C#
    项目步骤
    对编程的思考
    Web开发中使用数据库的3种方式
    动态得到属性的名字
    WPF Databinding examples
    【SPOJ】220 Relevant Phrases of Annihilation
    【FOJ】2075 Substring
    【UVa】760 DNA Sequencing
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4638429.html
Copyright © 2020-2023  润新知