• Leetcode-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

    n*n矩阵顺时针旋转90度,规律 a[i][j]-->a[j][n-i] 

    思路1.按规律逐行拷贝,需要开辟一个新的二维数组,空间复杂度略高

          2.按规律逐个元素和目标位置替换,发现每替换4次,坐标就会回到开始的地方

              以4*4的矩阵为例 a[0][0] --> a[0][3] --> a[3][3] -->a[3][0] --->a[0][0]

              元素4个一组分组,每遍历一行(n-1),最外圈的的元素构成的正方形就已经达成目标了

              缩小正方形逐行替换即可

     1 public class Solution {
     2         public void rotate(int[][] matrix) {
     3             if(matrix == null ||matrix.length <= 1){
     4                 return;
     5             }
     6             int n = matrix.length;
     7             int rectangleLen = n;
     8             int row = 0;
     9             while(rectangleLen >=2){
    10                 for(int i =row;i<= n-2 - row ;i++){
    11                     rotateRectangle(matrix,n,row,i);    
    12                 }
    13                 rectangleLen-= 2;
    14                 row ++;
    15             }
    16         }
    17         
    18         public void rotateRectangle(int[][] matrix,int n,int x_pos,int y_pos){
    19             int temp = matrix[x_pos][y_pos];
    20             int target  = 0;
    21             int temp_pos = 0;
    22             for(int i=0;i<4;i++){
    23                 target = temp;
    24                 //target position
    25                 temp_pos = x_pos;
    26                 x_pos = y_pos;
    27                 y_pos = n - 1 - temp_pos;
    28                 temp  = matrix[x_pos][y_pos];
    29                 //replace
    30                 matrix[x_pos][y_pos] = target; 
    31             }
    32         }
    33 }
  • 相关阅读:
    「ZJOI2019」开关
    「ZJOI2019」Minimax 搜索
    杨氏矩阵学习笔记
    「LibreOJ NOI Round #2」简单算术
    「LibreOJ NOI Round #2」小球进洞
    组合总和 II(力扣第40题)
    组合总和 I(力扣第39题)
    组合(力扣第77题)
    使用MapReduce解决蚂蚁森林第二题
    Hive练习--蚂蚁森林习题二
  • 原文地址:https://www.cnblogs.com/dijkstra-c/p/3951549.html
Copyright © 2020-2023  润新知