zoukankan      html  css  js  c++  java
  • 48. Rotate Image

    一、题目

      1、审题

      

      2、分析:

        给出一个二维数组代表的矩阵,求得矩阵顺时针旋转90度后的新矩阵。

    二、解答

      1、思路:

        方法一、观察可知,原矩阵与新矩阵的对应关系如下:

            ①、原矩阵的列 == 新矩阵的行;

            ②、原矩阵的行 + 新矩阵的列 == 矩阵的最大行号

            故借助一个二维数组可以实现

    class Solution {
        public void rotate(int[][] matrix) {
            int maxIndex = matrix.length-1;
            int[][] newMatrix = new int[maxIndex+1][maxIndex+1];
            for (int i = 0; i <= maxIndex; i++) {
                for (int j = 0; j <= maxIndex; j++) {
                    newMatrix[j][maxIndex - i] = matrix[i][j]; 
                }
            }
            
            for (int i = 0; i < newMatrix.length; i++) {
                for (int j = 0; j < newMatrix.length; j++) {
                    matrix[i][j] = newMatrix[i][j];
                }
            }
        }
    }

      方法二、不申请新数组,直接在原数组的基础上进行交换。

      ①、顺时针交换:

        a、将二维数组列元素进行旋转;

        b、将二维数组对称元素进行交换。

      

      ②、逆时针旋转:

        a、将行元素进行旋转;

        b、将二维数组对称元素进行交换。

    public void rotate(int[][] matrix) {
            int len = matrix.length;
            
            for (int i = 0, j = len - 1; i < j; i++, j--) {
                for (int k = 0; k < len; k++) {
                    int tmp = matrix[i][k];
                    matrix[i][k] = matrix[j][k];
                    matrix[j][k] = tmp;
                }
            }
            
            for (int i = 0; i < len; i++) {
                for (int j = i+1; j < len; j++) {    // 注意: j = i + 1 开始;
                    int tmp = matrix[i][j];
                    matrix[i][j] = matrix[j][i]; 
                    matrix[j][i] = tmp; 
                }
            }
        }
  • 相关阅读:
    NO 3 ,人生苦短,我学python之python 元祖tuple魔法
    NO 2,人生苦短,我学python之python 列表list的魔法
    NO 1,人生苦短,我学python之python 字符串的魔法
    几种常见登录验证的方式总结
    Spring Boot 解决跨域问题的 3 种方案
    浅析VO、DTO、DO、PO的概念、区别和用处
    对于分库分表的入门理解
    在项目启动后执行某段功能代码
    jna编程学习
    RabbitMQ详解
  • 原文地址:https://www.cnblogs.com/skillking/p/9634300.html
Copyright © 2011-2022 走看看