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*N的矩阵,顺时针旋转90度

    例如:
    1 2 3 7 8 9 7 4 1

    4 5 6 =》 4 5 6 =》 8 5 2

    7 8 9 1 2 3 9 6 3
     1  public void swapUpDown(int[][] matrix, int rowUp,int rowDown) {
     2         if(matrix.length == 0) return;
     3         for (int i = 0; i < matrix[0].length; i++) {
     4             int temp = matrix[rowUp][i];
     5             matrix[rowUp][i] = matrix[rowDown][i];
     6             matrix[rowDown][i]= temp;
     7         }
     8     }
     9 
    10     public void swapLeftRight(int[][] matrix, int colLeft,int colRight) {
    11         for (int i = 0; i < matrix.length; i++) {
    12             int temp = matrix[i][colLeft];
    13             matrix[i][colLeft] = matrix[i][colRight];
    14             matrix[i][colRight] = temp;
    15         }
    16     }
    17     
    18     public void rotate(int[][] matrix) {
    19         int length = matrix.length;
    20         if (length < 2) return;
    21 //        顺时针:上下互换  逆时针:左右互换
    22         int mid = matrix.length / 2;
    23         for (int col = 0; col < mid; col++) {
    24             if (length % 2 == 0) {
    25                 swapUpDown(matrix, col,mid * 2 - col - 1);
    26             } else {
    27                 swapUpDown(matrix, col,mid * 2 - col);
    28             }
    29         }
    //沿着左上到右下的对角线,交换对称的节点
    30 for (int i = 0; i < matrix.length; i++) { 31 for (int j = i + 1; j < matrix[i].length; j++) { 32 int temp = matrix[i][j]; 33 matrix[i][j] = matrix[j][i]; 34 matrix[j][i] = temp; 35 } 36 } 37 }
  • 相关阅读:
    sql2slack alash3al 开源的又个轻量级工具
    pgspider fetchq 扩展docker镜像
    godns 集成coredns 的demo
    godns 简单dnsmasq 的dns 替换方案
    aviary.sh 一个基于bash的分布式配置管理工具
    使用coredns 的template plugin实现一个xip 服务
    nginx 代理 coredns dns 服务
    基于nginx proxy dns server
    几个不错的geodns server
    spring boot rest api 最好添加servlet.context-path
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7675405.html
Copyright © 2011-2022 走看看