• 旋转图像 · 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
  • 相关阅读:
    C#多线程开发中如何更新UI界面控件内容
    C#中Invoke的用法(转)
    while loop, for loop
    basic bash learning 1
    Some useful link for leaning linux shell
    How to Adding ExtendReport in test framework
    如何解决Extent report 无法加载CSS样式 的问题
    Capturing Screenshots
    WebDriver switching to new window
    Data Driven Testing
  • 原文地址:https://www.cnblogs.com/immiao0319/p/8459655.html
Copyright © 2020-2023  润新知