zoukankan      html  css  js  c++  java
  • 旋转图像 · Rotate Image

    [抄题]:

    You are given an n x n 2D matrix representing an image.

    Rotate the image by 90 degrees (clockwise).

    Note:
    You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.

    Example 1:

    Given input matrix = 
    [
      [1,2,3],
      [4,5,6],
      [7,8,9]
    ],
    
    rotate the input matrix in-place such that it becomes:
    [
      [7,4,1],
      [8,5,2],
      [9,6,3]
    ]

     [暴力解法]:

    时间分析:

    空间分析:

    [思维问题]:

    [一句话思路]:

    先xy翻转,再对折。就差一步了,观察力不够没看出来

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

      [五分钟肉眼debug的结果]:

    [总结]:

    i代表行的坐标,j代表列的坐标,j = i时代表xy 

    [复杂度]:Time complexity: O(m*n) Space complexity: O(m*n)

    [英文数据结构或算法,为什么不用别的数据结构或算法]:

    [其他解法]:

    [Follow Up]:

    [LC给出的题目变变变]:

    289. Game of Life 题号小的很多题,就是一般的数组变换

     [代码风格] :

    public class Solution {
        /*
         * @param matrix: a lists of integers
         * @return: 
         */
        public void rotate(int[][] matrix) {
            //corner case
            if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
                return ;
            }
            int length = matrix[0].length;
            //reverse
            for (int i = 0; i < matrix.length; i++) {
                for (int j = i; j < matrix[0].length; j++) {//xy
                    int temp = matrix[i][j];
                    matrix[i][j] = matrix[j][i];
                    matrix[j][i] = temp;
                }
            }
            //flip
            for (int i = 0; i < matrix.length; i++) {//all row
                for (int j = 0; j < matrix[0].length / 2; j++) {// half col
                    int temp = matrix[i][j];
                    matrix[i][j] = matrix[i][length - 1 - j];
                    matrix[i][length - 1 - j] = temp;
                }
            }
        }
    }
    View Code
  • 相关阅读:
    第八天-2019-12-3环境变量-自动挂载-别名
    Raid
    图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
    第七天-2019-12-2改网卡,dns,挂载
    第六天2019-11-29vi命令使用技巧与架构目录
    linux目录架构
    第五天-2019-11-28基本配置命令
    第四天--2019-11-27网络信息配置
    ue4 Widget to RenderTarget
    UE4 ProcessEvent multiple parameters
  • 原文地址:https://www.cnblogs.com/immiao0319/p/8459655.html
Copyright © 2011-2022 走看看