力扣经典150题第三十六题:旋转图像

力扣经典150题第三十六题:旋转图像

引言

本篇博客介绍了力扣经典150题中的第三十六题:旋转图像。题目要求将给定的 n × n 二维矩阵顺时针旋转90度,并要求在原地进行修改。

题目详解

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

解题思路

要将矩阵顺时针旋转90度,可以分为两个步骤:

  1. 先进行矩阵的转置操作,即将矩阵的行列互换。
  2. 然后对转置后的矩阵进行每行元素的反转。

通过这两个步骤可以实现顺时针旋转90度的效果。

代码实现

public class RotateImage {
    public void rotate(int[][] matrix) {
        int n = matrix.length;
        
        // Step 1: Transpose the matrix
        for (int i = 0; i < n; i++) {
            for (int j = i; j < n; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        
        // Step 2: Reverse each row
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n / 2; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][n - 1 - j];
                matrix[i][n - 1 - j] = temp;
            }
        }
    }

    public static void main(String[] args) {
        RotateImage solution = new RotateImage();

        // 示例测试
        int[][] matrix1 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        System.out.println("输入矩阵1:");
        printMatrix(matrix1);
        solution.rotate(matrix1);
        System.out.println("顺时针旋转90度后的矩阵1:");
        printMatrix(matrix1);

        int[][] matrix2 = {{5, 1, 9, 11}, {2, 4, 8, 10}, {13, 3, 6, 7}, {15, 14, 12, 16}};
        System.out.println("输入矩阵2:");
        printMatrix(matrix2);
        solution.rotate(matrix2);
        System.out.println("顺时针旋转90度后的矩阵2:");
        printMatrix(matrix2);
    }

    private static void printMatrix(int[][] matrix) {
        for (int[] row : matrix) {
            System.out.println(Arrays.toString(row));
        }
        System.out.println();
    }
}

示例演示

展示了两个不同规模的矩阵输入,并输出了顺时针旋转90度后的结果。
在这里插入图片描述

复杂度分析

该解法的时间复杂度为 O(n^2),其中 n 是矩阵的大小(行数或列数)。空间复杂度为 O(1),除了存储结果的列表外,没有使用额外的空间。

总结

本篇博客介绍了如何实现顺时针旋转90度的矩阵操作,并给出了具体的解题思路和代码实现。希望对你有所帮

助!

扩展阅读

相关推荐

  1. 经典150:接雨水

    2024-04-23 14:32:03       34 阅读
  2. 经典150:最小覆盖子串

    2024-04-23 14:32:03       37 阅读
  3. 经典150:除自身以外数组的乘积

    2024-04-23 14:32:03       45 阅读
  4. 经典150:赎金信

    2024-04-23 14:32:03       37 阅读
  5. 经典150:两数之和

    2024-04-23 14:32:03       31 阅读
  6. 经典150:基本计算器

    2024-04-23 14:32:03       35 阅读
  7. 经典150:跳跃游戏二

    2024-04-23 14:32:03       37 阅读
  8. 经典150:整数转罗马数字

    2024-04-23 14:32:03       45 阅读
  9. 经典150:同构字符串

    2024-04-23 14:32:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 14:32:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 14:32:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 14:32:03       87 阅读
  4. Python语言-面向对象

    2024-04-23 14:32:03       96 阅读

热门阅读

  1. Python 实现12306抢票脚本

    2024-04-23 14:32:03       35 阅读
  2. 【QT】QtConcurrent的使用介绍,与std::thread的区别

    2024-04-23 14:32:03       40 阅读
  3. 大数据——Scala 元组

    2024-04-23 14:32:03       35 阅读
  4. Scala 之数组

    2024-04-23 14:32:03       38 阅读
  5. oracle数据库导出/导入

    2024-04-23 14:32:03       33 阅读
  6. XiaodiSec day038 Learn Note 小迪安全学习笔记

    2024-04-23 14:32:03       31 阅读
  7. 程序员缓解工作压力的小窍门

    2024-04-23 14:32:03       35 阅读