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).

    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]
    ]
    

    Example 2:

    Given input matrix =
    [
      [ 5, 1, 9,11],
      [ 2, 4, 8,10],
      [13, 3, 6, 7],
      [15,14,12,16]
    ], 
    
    rotate the input matrix in-place such that it becomes:
    [
      [15,13, 2, 5],
      [14, 3, 4, 1],
      [12, 6, 8, 9],
      [16, 7,10,11]
    ]

    把正方形的四条边分为四组,每组的n个数字位置互相占据,外层交换完成后进入内层

    time: O(N^2), space: O(1)

    class Solution {
        public void rotate(int[][] matrix) {
            int lrow = 0, lcol = 0, rrow = matrix.length - 1, rcol = matrix[0].length - 1;
            while(lrow < rrow && lcol < rcol) {
                 for(int i = 0; i < rcol - lcol; i++) {
                     int tmp = matrix[lrow][lcol + i];
                     matrix[lrow][lcol + i] = matrix[rrow - i][lcol];
                     matrix[rrow - i][lcol] = matrix[rrow][rcol - i];
                     matrix[rrow][rcol - i] = matrix[lrow + i][rcol];
                     matrix[lrow + i][rcol] = tmp;
                 }
                lrow++;lcol++;rrow--;rcol--;
            }
        }
    }
  • 相关阅读:
    手机号码正则表达式
    POJ 3233 Matrix Power Series 矩阵快速幂
    UVA 11468
    UVA 1449
    HDU 2896 病毒侵袭 AC自动机
    HDU 3065 病毒侵袭持续中 AC自动机
    HDU 2222 Keywords Search AC自动机
    POJ 3461 Oulipo KMP模板题
    POJ 1226 Substrings KMP
    UVA 1455 Kingdom 线段树+并查集
  • 原文地址:https://www.cnblogs.com/fatttcat/p/10134939.html
Copyright © 2011-2022 走看看