美文网首页
LeetCode:48. 旋转图像简单思路求解

LeetCode:48. 旋转图像简单思路求解

作者: 天降小纸箱 | 来源:发表于2021-01-04 13:20 被阅读0次

题目:48. 旋转图像

描述:给定一个 n × n 的二维矩阵表示一个图像,将图像顺时针旋转 90 度。

image.png

实现思路:
1.先将二维数组转置;
2.将倒置的二维数组列互换可解

实现代码

/**
     * 旋转图像: https://leetcode-cn.com/problems/rotate-image/
     * <p>
     * 实现思路:
     * 1. 数组转置;
     * 2. 第 i 列与第 n-i 列互换
     *
     * @param matrix
     */
    public static void rotate(int[][] matrix) {
        reverseMatrix(matrix);  // 先将数组进行转置
        System.out.println("数组转置:");
        showTwoMatrix(matrix);
        // 列交换
        int column = matrix[0].length;
        for (int i = 0; i < column / 2; i++) {
            for (int j = 0; j < matrix.length; j++) {
                int temp = matrix[j][i];
                matrix[j][i] = matrix[j][column - i - 1];
                matrix[j][column - i - 1] = temp;
            }
        }
        // 列交换:
        showTwoMatrix(matrix);
        /* // 行交换
        int[] temp;
        for (int i = 0; i < matrix.length / 2; i++) {
            temp = matrix[i];
            matrix[i] = matrix[matrix.length - i - 1];
            matrix[matrix.length - i - 1] = temp;
        }*/
    }

    /**
     * 数组转置
     *
     * @param matrix
     */
    public static void reverseMatrix(int[][] matrix) {
        int temp;
        for (int i = 0; i < matrix.length; i++) { // 转置矩阵
            for (int j = 0; j < i; j++) {   // 遍历下三角,交换
                temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
    }

    public static void showTwoMatrix(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                System.out.print(matrix[i][j] + "\t");
            }
            System.out.println();
        }
        System.out.println();
    }

测试用例及结果:


image.png

相关文章

网友评论

      本文标题:LeetCode:48. 旋转图像简单思路求解

      本文链接:https://www.haomeiwen.com/subject/gixvoktx.html