算法-旋转图像

news2025/2/25 20:30:12

1、算法来源

48. 旋转图像 - 力扣(LeetCode)

2、算法描述

给定一个 × 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]]

提示:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

3、题解分享

// 方法一:
class Solution {
    public void rotate(int[][] matrix) {
        // 思路:一圈一圈的旋转 + 使用辅助数组先存储某一行的数据
        int n = matrix.length;
        int row1 = 0,col1 = 0;
        int row2 = n - 1,col2 = n-1;
        while(row1 < row2 && col1 < col2){
            rotateCircle(matrix,row1++,col1++,row2--,col2--);
        }
    }
    public void rotateCircle(int[][] matrix,int row1,int col1,int row2,int col2){
        int[] temp = new int[row2 - row1];
        //先存起来
        int index = 0;
        for(int i = col1;i<col2;++i){
            temp[index++] = matrix[row1][i];
        }
        // 旋转
        int i = row1 + 1,j = col2 - 1;
        //左放上
        while(i <= row2 && j >= col1){
            matrix[row1][j] = matrix[i][col1];
            ++i;
            --j;
        }
        // 下放左
        i = col1 + 1;
        j = row1 + 1;
        while(i <= col2 && j <= row2){
            matrix[j][col1] = matrix[row2][i];
            ++i;
            ++j;
        }
        // 右放下
        i = row2 - 1;
        j = col1 + 1;
        while(i >= row1 && j <= col2){
            matrix[row2][j] = matrix[i][col2];
            --i;
            ++j;
        }
        // 上放右
        index = 0;
        for(int k = row1;k<row2;++k){
            matrix[k][col2] = temp[index++];
        }
    }
}
// 方法二
class Solution {
    public void rotate(int[][] matrix) {
        // 原地旋转 + 找规律
        int n = matrix.length;
        for (int i = 0; i < n / 2; ++i) {
            for (int j = 0; j < (n + 1) / 2; ++j) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[n - j - 1][i];
                matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
                matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
                matrix[j][n - i - 1] = temp;
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题-围棋的气-2023年OD统一考试(C卷)---python代码

题目&#xff1a; 代码&#xff1a; """ # 输入&#xff1a;2的倍数 第一个为行号 0-18 第二个为列号 0-18第一行为黑色 第二行为白色思路&#xff1a;先求黑色&#xff0c;进行去重棋子的位置&#xff0c;再求白色 逐个棋子求坐标。 """ d…

Python从进阶到高级—通俗易懂版

Python从进阶到高级—通俗易懂版 一、简介 Python 进阶是我一直很想写的&#xff0c;作为自己学习的记录&#xff0c;过去自己在看一些代码的时候经常会困惑&#xff0c;看不懂&#xff0c;然后自己去查资料、看书籍&#xff0c;慢慢的一个个弄懂&#xff0c;经常沉浸其中。关…

王者归来!Stability-AI又放大招 | Stable Cascade:更快更强的图像生成模型!

标题&#xff1a;王者归来&#xff01;Stability-AI又放大招 | Stable Cascade:更快更强的图像生成模型&#xff01; Stable Diffusion官方最新发布了Stable Cascade&#xff0c;相较于之前的SD-1.5以及SDXL模型有了质的提升。可谓开源王者归来&#xff01; 该模型是建立在 Wr…

《低功耗方法学》翻译——第十二章:物理库

第十二章&#xff1a;物理库 实现低功耗设计的第一步之一是选择支持设计中使用的低功耗策略的标准单元库和一组存储器编译器。本章介绍多电压功率门控设计对标准单元库和存储器的要求 12.1 标准单元库 标准单元库针对不同的性能、功率和面积目标进行调整。对于低功耗设计&am…

Linux 文件-基础IO

预备知识 文件内容属性 1 所有对文件的操作可分为两类&#xff1a;a 对内容操作 b 对属性操作 2 内容是数据&#xff0c;属性也是数据&#xff0c;存储文件必须既要存储内容&#xff0c;也要存储属性数据 默认文件在磁盘上 3 进程访问一个文件的时候&#xff0c;都要先把这…

adb-连接模拟器和真机操作

目录 1. 连接模拟器&#xff08;夜神模拟器示例&#xff09; 1.1 启动并连接模拟器 1.2 开启调试模式 2. USB连接真机调试 2.1 usb数据线连接好电脑&#xff0c;手机打开调试模式 2.2 输入adb devices检测手机 3. Wifi连接真机调试 3.1 USB连接手机和电脑 3.2 运行 adb…

Recorder 实现语音录制并上传到后端(兼容PC和移动端)

Recorder 首页&#xff1a;https://github.com/xiangyuecn/Recorder 一、安装 npm install recorder-core二、代码部分 1. HTML页面 <template><div><el-inputv-model"ttsText"type"textarea"placeholder"请输入内容"><…

Java后端底座从无到有的搭建(随笔)

文章目录 开发模式的演变草创时期1.0时期&#xff08;基座时期&#xff09;1.1时期&#xff08;低代码时期&#xff09;2.0时期&#xff08;无代码时期&#xff09; 前言&#xff1a;本文是笔者在初创公司&#xff0c;一年多来Java后端服务底座搭建过程的总结&#xff0c;如有不…

2024三掌柜赠书活动第十一期:精通区块链开发技术(第2版)

目录 前言关于区块链开发技术关于《精通区块链开发技术(第2版)》编辑推荐内容简介作者简介图书目录书中前言/序言《精通区块链开发技术(第2版)》全书速览结束语 前言 作为开发者经常在技术圈活动&#xff0c;会接触各种前沿技术&#xff0c;比如区块链技术的崛起引发了全球范…

报Error:java: 无效的目标发行版: 11的解决方法

step1. 打开文件下的Project Structure 如下图&#xff1a; 把红色框中的改为你目前的jdk版本&#xff0c;我现在为jdk8,所以改为1.8 step2. 继续打开 Modules 模块修改每个项目中的 language level.切记是每个项目 step3. 打开文件下的settings&#xff0c;继续修改如…

华媒舍:10种小红书推广品牌形象打造出的方式

小红书已成为我国最热门的购物推荐平台之一。不单单是用户数量众多&#xff0c;小红书也算得上是一个优质的品牌品牌形象打造平台。下面我们就详细介绍10种小红书推广渠道品牌形象打造出方式&#xff0c;帮助品牌在小红书上取得更好的营销效果。 1.掌握产品在小红书上进行宣传以…

基于Java SSM框架实现网上拍卖系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现网上拍卖系统演示 JSP技术介绍 JSP技术本身是一种脚本语言&#xff0c;但它的功能是十分强大的&#xff0c;因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时&#xff0c;它可以使显示逻辑和内容分开&#xff0c;这就极大的方便了用户的需求。…

Spring面试(一)

现在基本上企业开发标配都是Spring5Springboot2Jdk7 1.Spring的优点 IOC和DI的支持&#xff1a;Spring的核心是一个工厂容器&#xff0c;可以维护所有对象的创建和依赖关系&#xff0c;Spring工厂用于生成bean&#xff0c;并且管理Bean的生命周期&#xff0c; 实现高内聚低耦…

2024年黑龙江省考公告出来了,招7768人,速速查收报名流程!

✔️报名时间&#xff1a;2024年2月19日9:00至2月23日17:00 ✔️资格审查时间&#xff1a;至2024年2月23日17:00 ✔️缴费时间&#xff1a;至2024年2月25日09&#xff1a;00 ✔️打印准考证时间&#xff1a;2024年3月12日9&#xff1a;00至3月17日9&#xff1a;00 ✔️公共科目…

Android 面试问题 2024 版(其一)

Android 面试问题 2024 版&#xff08;其一&#xff09; 一、Java 和 Kotlin二、安卓组件三、用户界面 (UI) 开发四、安卓应用架构五、网络和数据持久性 一、Java 和 Kotlin Java 中的抽象类和接口有什么区别&#xff1f; 答&#xff1a;抽象类是不能实例化的类&#xff0c;它…

使用AndroidStudio调试Framework

1.前言 最近在工作过程中&#xff0c;涉及到FW的一些修改&#xff0c;比如PhoneWindowManager&#xff0c;只能通过加日志看打印的方式查看一些内容&#xff0c;比较低效&#xff0c;所以想了解一下FW的调试方式&#xff0c;后来发现AS就可以调试FW.我平时都是在Docker服务器编…

NodeJs 第二十四章 CSRF攻击和防御

Cross Site Request Forgery(CSRF) 跨站请求伪造是一种攻击&#xff0c;它迫使最终用户在其当前经过身份验证的 Web 应用程序上执行不需要的操作&#xff0c;例如转移资金、更改电子邮件地址等。 例如&#xff0c;这些非预期请求可能是通过在跳转链接后的 URL 中加入恶意参数来…

Spring Bean 的生命周期了解么?

Spring Bean 的生命周期基本流程 一个Spring的Bean从出生到销毁的全过程就是他的整个生命周期, 整个生命周期可以大致分为3个大的阶段 : 创建 使用 销毁 还可以分为5个小步骤 : 实例化(Bean的创建) , 初始化赋值, 注册Destruction回调 , Bean的正常使用 以及 Bean的销毁 …

人工智能_CPU安装运行ChatGLM大模型_安装清华开源人工智能AI大模型ChatGlm-6B_004---人工智能工作笔记0099

上一节003节我们安装到最后,本来大模型都可以回答问题了,结果, 5分钟后给出提示,需要GPU,我去..继续看官网,如何配置CPU运行 没办法继续看: https://github.com/THUDM/ChatGLM-6B 这里是官网可以看到 需要gcc的版本是11.3.0,这里我们先没有去安装,直接试试再说 yum instal…

jenkins配置ssh的时候测试连接出现Algorithm negotiation fail

背景&#xff1a;当jenkins升级后&#xff0c;同时ssh插件也升级&#xff0c;测试ssh连接的时候 出现的问题&#xff1a; com.jcraft.jsch.JSchAlgoNegoFailException: Algorithm negotiation fail: algorithmName"server_host_key" jschProposal"ecdsa-sha2-n…