zoukankan      html  css  js  c++  java
  • [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;
                 
                }
            } 
            
        }
    }
  • 相关阅读:
    Fixed数据类型
    unity3d游戏物体跟着鼠标方向移动
    unity gl 画线
    Unity3D研究院之游戏对象的访问绘制线与绘制面详解(十七)
    像素填充率,纹理填充率,显存带宽
    GPU渲染管线与shader
    Unity协程(Coroutine)原理深入剖析
    C#基本线程同步
    C#多线程编程
    详解C#中的反射
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4638429.html
Copyright © 2011-2022 走看看