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

这篇具有很好参考价值的文章主要介绍了力扣经典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度后的结果。
力扣经典150题第三十六题:旋转图像,经典算法合集,leetcode,算法,职场和发展

复杂度分析

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

总结

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

助!文章来源地址https://www.toymoban.com/news/detail-861298.html

扩展阅读

  • 力扣官方题解 - 旋转图像

到了这里,关于力扣经典150题第三十六题:旋转图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【力扣刷题 | 第十六题】

    目录 前言: 198. 打家劫舍 - 力扣(LeetCode) 213. 打家劫舍 II - 力扣(LeetCode)  总结: 我们今天继续刷动态规划的题,希望大家可以和我一起坚持下去。 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有

    2024年02月15日
    浏览(44)
  • LeetCode力扣 面试经典150题 详细题解 (1~5) 持续更新中

    目录 1.合并两个有序数组 2.移动元素  3.删除有序数组中的重复项  4.删除排序数组中的重复项 II 5.多数元素 暂时更新到这里,博主会持续更新的 题目(难度:简单): 给你两个按 非递减顺序 排列的整数数组  nums1   和  nums2 ,另有两个整数  m  和  n  ,分别表示  nu

    2024年02月19日
    浏览(42)
  • C语言第三十六弹---文件操作(中)

    ✨ 个人主页:   熬夜学编程的小林 💗 系列专栏:   【C语言详解】   【数据结构详解】 文件操作 1、文件的顺序读写 1.1、顺序读写函数介绍 1.1.1、fgetc 与 fputc 1.1.2、fgets 与 fputs 1.1.3、fscanf 与 fprintf 1.1.4、fread 与 fwrite 1.2、对比一组函数 总结 函数名 功能 适用于 fgetc 字符输

    2024年03月11日
    浏览(91)
  • 吾爱2023新年红包题第六题 (CTF)

    直接开整: 直接顺着方法找就行; if (84.0d = d d = 99.0d) : 这个太可怕了,播放细狗mp3; if (100.0d = d d = 101.0d) 当分贝在这个区间 z = true 才能往下走 if (z) z=true 弹窗 “快去找flag吧”, 并调用 write_img(); 写aes.png图片 搞开看看目录下是啥玩意: 图片? img文本 base64? 这些 native 方法

    2024年02月04日
    浏览(39)
  • ROS学习第三十六节——Gazebo仿真环境搭建

    1.1加入环境模型 在工程文件中创建worlds文件夹,并把之前下载的box_house.world文件放入  1.2编写launch文件 deamo03_car_world.launch 2.1启动 Gazebo 并添加组件 2.2保存仿真环境 添加完毕后,选择 file --- Save World as 选择保存路径(功能包下: worlds 目录),文件名自定义,后缀名设置为 .worl

    2023年04月24日
    浏览(40)
  • 第三十六讲:神州无线AP胖AP模式配置与管理

          胖AP(Fat AP)配置一个开放式WLAN非常方便,需要完成的操作包括有线和无线两部分的配置。有线部分即ethernet接口的配置,保证AP能够接入Internet,无线部分的配置包括关联WLAN与VLAN,广播SSID,启用VAP,若无其他DHCP服务器的话,AP还需要启用DHCP为无线客户下发IP地址。 配置要

    2024年02月05日
    浏览(47)
  • ChatGPT 与生成式 AI 的崛起:第二十六章到第三十三章

    原文:Rise of Generative AI and ChatGPT 译者:飞龙 协议:CC BY-NC-SA 4.0 恐怖分子、罪犯、警察、国防、执法机构、工程师、作家和学生等都在使用 ChatGPT,这是来自 OpenAI 的强大自然语言人工智能工具,作为他们日常工作的重要组成部分。自去年 11 月底发布以来,这种生成式人工智

    2024年01月24日
    浏览(280)
  • 从零开始的力扣刷题记录-第三十九天

    题目描述: 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按如下格式输

    2024年02月06日
    浏览(47)
  • 【AI视野·今日NLP 自然语言处理论文速览 第三十六期】Tue, 19 Sep 2023

    AI视野 ·今日CS.NLP 自然语言处理论文速览 Tue, 19 Sep 2023 (showing first 100 of 106 entries) Totally 106 papers 👉 上期速览 ✈更多精彩请移步主页 Speaker attribution in German parliamentary debates with QLoRA-adapted large language models Authors Tobias Bornheim, Niklas Grieger, Patrick Gustav Blaneck, Stephan Bialonski 不断增长

    2024年02月07日
    浏览(63)
  • 爬虫工作量由小到大的思维转变---<第三十六章 Scrapy 关于CrawlSpider引发的议题>

    因为scrapy-redis里面有两个spider,一个basespider,一个crawlspider;有人分不清他们的区别;本文就来掰一掰他们的事; `CrawlSpider` 和 `Spider` 是两个不同的爬虫类,具有以下区别: 1. `Spider` 类:`Spider` 是 Scrapy 中最基本的爬虫类。你可以从 `scrapy.Spider` 类派生出自定义的爬虫类。在基本的

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包