力扣初级算法(旋转矩阵)

news2024/11/28 20:44:15

力扣初级算法(旋转矩阵)

  • 每日一算法:旋转矩阵

学习内容:

1.问题:

给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。
不占用额外内存空间能否做到?

2.示例:

示例一:

给定 matrix = 
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
],

原地旋转输入矩阵,使其变为:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

示例二:

给定 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]
]

3.旋转矩阵的解法:

3.1自我总结(借鉴力扣大佬的思路):

如果是顺时针旋转90°
一定是先对角线翻转再水平翻转
如果是逆时针旋转90°
一定是先水平翻转,再对角线翻转

为了方便大家理解,我给大家画了张图:
在这里插入图片描述

3.2 代码实现

class Solution {
    public void rotate(int[][] matrix) {

         int length =  matrix.length;

        //先对角线翻转
        for(int i = 0;i<length;i++){
            for(int j = i+1;j<length;j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        //再水平翻转
        for (int i= 0; i<length;i++){
            for (int j =0;j<length;j++){
                if (j<length-j-1) {
                    int temp = matrix[i][j];
                    matrix[i][j] = matrix[i][length - j - 1];
                    matrix[i][length - j - 1] = temp;
                }
            }
        }
    }
}

这段代码执行完:
在这里插入图片描述

方法二:这里借鉴的大佬的另外一个思路实现的:

class Solution {
    public void rotate(int[][] matrix) {

         int length =  matrix.length;

        //先上下翻转
        for(int i = 0;i<length/2;i++){
            int[] a = new int[length -1];
            a = matrix[i];
            matrix[i] = matrix[length - i -1];
            matrix[length - i -1] = a;
        }

        //再对角线翻转
        for(int i = 0;i<length;i++){
            for(int j = i+1;j<length;j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
    }
}

执行结果:
在这里插入图片描述


学习时间:

因为最近工作繁忙,晚上回家竟然懈怠了,惭愧惭愧,大家一起加油学习力扣算法把!

2023/08/10

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

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

相关文章

React源码解析18(3)------ beginWork的工作流程【mount】

摘要 OK&#xff0c;经过上一篇文章。我们调用了&#xff1a; const root document.querySelector(#root); ReactDOM.createRoot(root)生成了FilberRootNode和HostRootFilber。 并且二者之间的对应关系也已经确定。 而下一步我们就需要调用render方法来讲react元素挂载在ro…

途乐证券-保险消费者信心延续恢复态势 健康险、意外险增购意愿上

今年以来&#xff0c;稳妥顾客决心延续调整康复态势。我国稳妥保证基金有限责任公司&#xff08;以下简称“稳妥保证基金公司”&#xff09;近来发布数据显现&#xff0c;2023年二季度&#xff0c;我国稳妥顾客决心指数为67.7&#xff0c;环比下降3.6&#xff0c;同比上升1.2&a…

一文读懂c++语言

一文读懂C语言 C的发展C的设计目标C的特性C的挑战 C的发展 C是一种通用的、高级的编程语言&#xff0c;它是C语言的扩展。C由Bjarne Stroustrup于1983年首次引入&#xff0c;并在之后的几十年中不断发展壮大。C被广泛应用于各种领域&#xff0c;包括系统开发、游戏开发、嵌入式…

keil显示中文代码正常,但是编译中文乱码的问题

Configuration---Editor---Encoding&#xff0c;ANSI或是UTF8&#xff0c;总之这2个&#xff0c;是A就改为U&#xff0c;是U就改为A。 MDK5中文编译乱码&#xff0c;不是显示乱码哦。

Android Camera预览画面变形问题

csdn 问题 安卓camera1在预览时&#xff0c;预览画面看起来被拉伸了&#xff0e; 如图&#xff0c;圆形的盖子&#xff0c;变成椭圆形了&#xff0e; 代码 默认流程&#xff0c;如下为大致的打开摄像头并进行预览显示的代码 private Camera mCamera null; private Surfa…

YOLOv5入门

模型检测 关键参数 weights:训练好的模型文件 source: 检测的目标&#xff0c;可以是单张图片、文件夹、屏幕或者摄像头等 conf-thres: 置信度闯值&#xff0c;越低框越多&#xff0c;越高框越少 iou-thres: IOU闻值&#xff0c;越低框越少&#xff0c;越少框越多 torch.hu…

windows安装apache-jmeter-5.6.2教程

目录 一、下载安装包&#xff08;推荐第二种&#xff09; 二、安装jmeter 三、启动jmeter 一、下载安装包&#xff08;推荐第二种&#xff09; 1.官网下载&#xff1a;Apache JMeter - Download Apache JMeter 2.百度云下载&#xff1a;链接&#xff1a;https://pan.baidu.…

vivo 场景下的 H5无障碍适配实践

作者&#xff1a;vivo 互联网前端团队- Zhang Li、Dai Wenkuan 随着信息无障碍的建设越来越受重视&#xff0c;开发人员在无障碍适配中也遇到了越来越多的挑战。本文是笔者在vivo开发H5项目做无障碍适配的实践总结。本文主要介绍了在前端项目中常用的无障碍手势和无障碍属性&am…

kubeadm安装

master&#xff08;2C/4G&#xff0c;cpu核心数要求大于2&#xff09; 192.168.223.71 node01&#xff08;2C/2G&#xff09; 192.168.223.72 node02&#xff08;2C/2G&#xff09; 192.168.223.73…

validator入门

validator中文文档地址和英文地址 https://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html/validator-gettingstarted.html https://docs.jboss.org/hibernate/validator/6.0/reference/en-US/html_single/#preface自定义hibernate-validator校验 工具类Valid…

基于SOM神经网络的柴油机故障诊断

1.案例背景 1.1 SOM神经网络概述 自组织特征映射网络(Self - Organizing Feature Map,SOM)也称Kohonen网络,它是由荷兰学者Teuvo Kohonen于1981年提出的。该网络是一个由全连接的神经元阵列组成的无教师、自组织、自学习网络。Kohonen认为,处于空间中不同区域的神经元有着不同…

别克VELITE 5增程式混动电动汽车变速箱解析

别克VELITE 5增程式电动汽车智能无极变速箱采用双电机双行星轮组的设计&#xff0c;相比其他技术具有更高的自由度&#xff0c;两个点击可同时参与驱动或单独发电&#xff0c;在内部集成的TPIM 模块的控制下&#xff0c;发动机与点击可同时100%参与驱动&#xff0c;变速范围更加…

嘉楠勘智k230开发板上手记录(二)--hello world

上次成功在k230上烧录sdk&#xff0c;这次准备实现hello world和ssh scp远程k230 主要是按照K230 SDK 基础教程的K230_实战基础篇_hello_world.md 一、PC连接k230 1. 初步准备 首先下载串口工具PuTTY&#xff0c;这个我个人感觉比较方便。 准备两根USB type-C数据线&#…

Vue + MapBox快速搭建

一、说明&#xff1a; 1.mapbox-gl自2.0版本开始不再开源&#xff0c;需要用户在官网申请key使用。 2.maplibre GL JS是一个开源库&#xff0c;它起源于 mapbox-gl-js 的开源分支。该库的初始版本&#xff08;1.x&#xff09;旨在替代Mapbox的OSS版本。简单来说maplibre是mapb…

老师如何设计一个实用的分班查询系统?

暑期过后&#xff0c;学校将迎来分班工作。有些是小升初需要分班&#xff0c;有些是高一升高二需要分班。对于老师来说&#xff0c;直接将分班结果发送到班级群&#xff0c;家长找不到结果时会发送信息询问&#xff0c;放假期间老师也需要时刻盯着手机。 不过&#xff0c;聪明…

公网环境Windows系统,远程桌面控制树莓派《内网穿透》

远程桌面控制树莓派&#xff0c;我们可以用xrdp协议来实现&#xff0c;它内部使用的是windows远程桌面的协议。我们只需要在树莓派上安装xrdp&#xff0c;就可以在同个局域网下远程桌面控制树莓派。 而如果需要在公网下远程桌面控制树莓派&#xff0c;可以通过cpolar内网穿透&a…

C语言笔试训练【第七天】

文章目录 &#x1fa92;1、以下对C语言函数的有关描述中&#xff0c;正确的有【多选】&#xff08; &#xff09;&#x1f9ef;2、在C语言中&#xff0c;以下正确的说法是&#xff08; &#xff09;&#x1faaa;3、在上下文及头文件均正常的情况下&#xff0c;下列代码的输出是…

跨境干货|TikTok变现的9种方法

在这个流量为王的时代&#xff0c;哪里有流量&#xff0c;哪里就有商机。TikTok作为近几年最火爆的社媒平台之一&#xff0c;在全球范围都具有一定的影响力。随着TikTok Shop等商务功能加持上线&#xff0c;更是称为跨境电商的新主场之一。 在这样的UGC平台&#xff0c;想要变…

VM官网下载VM workstations pro

官网下载https://www.vmware.com/products.html 此处需要注册账号下载&#xff0c;用邮箱注册一个一账号就可以了&#xff0c;下载就完成了

15.2 【Linux】仅执行一次的工作调度

15.2.1 atd 的启动与 at 运行的方式 要使用单一工作调度时&#xff0c;我们的 Linux 系统上面必须要有负责这个调度的服务&#xff0c;那就是 atd 。 不过并非所有的 Linux distributions 都默认会把他打开的&#xff0c;所以&#xff0c;某些时刻我们必须要手动将他启用才行。…