当前位置: 首页 > news >正文

力扣每日一题48:旋转图像

题目描述:

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

通过次数

495.6K

提交次数

659.8K

通过率

75.1%

题解和思路:

方法一:外层旋转然后向内层收缩。

做一个循环,每次循环时旋转矩阵最外层回字型,然后矩阵向内收缩,直到收缩到一个2*2矩阵或一个1*1矩阵时就停止。

代码:

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int n=matrix.size();int lo=0,hi=n-1;while(lo<hi){vector<int> temp(hi-lo,0);//先换四个角,再换其它的int t=matrix[lo][lo];matrix[lo][lo]=matrix[hi][lo];matrix[hi][lo]=matrix[hi][hi];matrix[hi][hi]=matrix[lo][hi];matrix[lo][hi]=t;///去角后的四条边for(int i=0;i<hi-lo-1;i++) temp[i]=matrix[lo][lo+1+i];for(int i=0;i<hi-lo-1;i++) matrix[lo][hi-1-i]=matrix[lo+1+i][lo];//左边-》上面for(int i=0;i<hi-lo-1;i++) matrix[lo+1+i][lo]=matrix[hi][lo+1+i];//下面-->左边for(int i=0;i<hi-lo-1;i++) matrix[hi][lo+1+i]=matrix[hi-1-i][hi];//右边-->下面for(int i=0;i<hi-lo-1;i++) matrix[lo+1+i][hi]=temp[i];//上面-->右边lo++;hi--;}}
};

方法二:反转代替旋转

先将矩阵通过水平轴翻转(即第一行和最后一行换,第二行和倒数第二行换......),再通过主对角线翻转,最后得到的矩阵和将原数组顺时针旋转90°的矩阵是一样的。不信的话可以自己拿一个长方形的纸片试一试。官方题解有这种思路,我直接放官方题解代码吧。

代码:

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int n = matrix.size();// 水平翻转for (int i = 0; i < n / 2; ++i) {for (int j = 0; j < n; ++j) {swap(matrix[i][j], matrix[n - i - 1][j]);}}// 主对角线翻转for (int i = 0; i < n; ++i) {for (int j = 0; j < i; ++j) {swap(matrix[i][j], matrix[j][i]);}}}
};

相关文章:

力扣每日一题48:旋转图像

题目描述&#xff1a; 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],…...

操作系统——吸烟者问题(王道视频p34、课本ch6)

1.问题分析&#xff1a;这个问题可以看作是 可以生产多种产品的 单生产者-多消费者问题 2.代码——这里就是由于同步信号量的初值都是1&#xff0c;所以没有使用mutex互斥信号&#xff0c; 总共4个同步信号量&#xff0c;其中一个是 finish信号量...

通讯协议学习之路:CAN协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 序、…...

Redis常用配置详解

目录 一、Redis查看当前配置命令二、Redis基本配置三、RDB全量持久化配置&#xff08;默认开启&#xff09;四、AOF增量持久化配置五、Redis key过期监听配置六、Redis内存淘汰策略七、总结 一、Redis查看当前配置命令 # Redis查看当前全部配置信息 127.0.0.1:6379> CONFIG…...

卷积神经网络CNN学习笔记-MaxPool2D函数解析

目录 1.函数签名:2.学习中的疑问3.代码 1.函数签名: torch.nn.MaxPool2d(kernel_size, strideNone, padding0, dilation1, return_indicesFalse, ceil_modeFalse) 2.学习中的疑问 Q:使用MaxPool2D池化时,当卷积核移动到某位置,该卷积核覆盖区域超过了输入尺寸时,MaxPool2D会…...

基于图像字典学习的去噪技术研究与实践

图像去噪是计算机视觉领域的一个重要研究方向&#xff0c;其目标是从受到噪声干扰的图像中恢复出干净的原始图像。字典学习是一种常用的图像去噪方法&#xff0c;它通过学习图像的稀疏表示字典&#xff0c;从而实现对图像的去噪处理。本文将详细介绍基于字典学习的图像去噪技术…...

记一次Clickhouse 复制表同步延迟排查

现象 数据从集群中一个节点写入之后&#xff0c;其他两个节点无法及时查询到数据&#xff0c;等了几分钟。因为我们ck集群是读写分离架构&#xff0c;也就是一个节点写数据&#xff0c;其他节点供读取。 排查思路 从业务得知&#xff0c;数据更新时间点为&#xff1a;11:30。…...

Maven的详细安装步骤说明

Step 1: 下载Maven 首先&#xff0c;您需要从Maven官方网站&#xff08;https://maven.apache.org/&#xff09;下载Maven的最新版本。在下载页面上&#xff0c;找到与您操作系统对应的二进制文件&#xff08;通常是.zip或.tar.gz格式&#xff09;&#xff0c;下载到本地。 St…...

金融机器学习方法:K-均值算法

目录 1.算法介绍 2.算法原理 3.python实现示例 1.算法介绍 K均值聚类算法是机器学习和数据分析中常用的无监督学习方法之一&#xff0c;主要用于数据的分类。它的目标是将数据划分为几个独特的、互不重叠的子集或“集群”&#xff0c;以使得同一集群内的数据点彼此相似&…...

移远通信携手MIKROE推出搭载LC29H系列模组的Click boards开发板,为物联网应用带来高精定位服务

近日&#xff0c;移远通信与MikroElektronika&#xff08;以下简称“MIKROE”&#xff09;展开合作&#xff0c;基于移远LC29H系列模组推出了多款支持实时动态载波相位差分技术&#xff08;RTK&#xff09;和惯性导航&#xff08;DR&#xff09;技术的Click Boards™ 开发板&am…...

Spring Cloud 之 Sentinel简介与GATEWAY整合实现

简介 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件&#xff0c;主要以流量为切入点&#xff0c;从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 熔断 …...

搭建网站七牛云CDN加速配置

打开七牛云后台&#xff1b;添加域名&#xff1b; 添加需要加速的域名&#xff0c;比如我添加的是motoshare.cn 源站配置&#xff0c;这里要用IP地址&#xff0c;访问的目录下面要有能访问测试的文件&#xff0c;尽量不要用源站域名&#xff0c;这个只能用加速二级域名&#x…...

算法|每日一题|做菜顺序|贪心

1402. 做菜顺序 原题地址&#xff1a; 力扣每日一题&#xff1a;做菜顺序 一个厨师收集了他 n 道菜的满意程度 satisfaction &#xff0c;这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间&#xff08;包含之前每道菜所花…...

json-server工具准备后端接口服务环境

1.安装全局工具json-server&#xff08;全局工具仅需要安装一次&#xff09; 官网&#xff1a;json-server - npm 点击Getting started可以查看使用方法 在终端中输入yarn global add json-server或npm i json-server -g 如果输入json-server -v报错 再输入npm install -g j…...

文心一言 VS 讯飞星火 VS chatgpt (118)-- 算法导论10.3 3题

三、用go语言&#xff0c;在ALLOCATE-OBJECT和 FREE-OBJECT过程的实现中&#xff0c;为什么不需要设置或重置对象的 prev 属性呢? 文心一言&#xff1a; 在 Go 语言中&#xff0c;ALLOCATE-OBJECT 和 FREE-OBJECT 过程的实现通常不需要显式地设置或重置对象的 prev 属性。这…...

numpy矩阵画框框

在n>5(n是奇数)的nn数组中&#xff0c;用*画外方框和内接菱形。 (本笔记适合熟悉numpy的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那…...

三十六、【进阶】show profiles分析

1、profiles &#xff08;1&#xff09;详情 可以帮助清楚的展现&#xff0c;每一条SQL语句的执行耗时&#xff0c;以及时间都耗费到哪里去了 &#xff08;2&#xff09;基础语句 2、查看是否支持profiles mysql> select have_profiling; ------------------ | have_prof…...

商品规格项数据的遍历以及添加

简介 今天在处理规格项的数据时遇到了一些问题&#xff0c;接下来就给大家分享一下 规格项数据设计 "specifications": [{"goodsSpecificationId": 6,"goodsSpecificationName": "网络类型","goodsTypeId": 24,"goods…...

华为eNSP配置专题-RIP路由协议的配置

文章目录 华为eNSP配置专题-RIP路由协议的配置0、概要介绍1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、终端构成和连接2.2、终端的基本配置 3、RIP路由的配置3.1、RIP路由的配置3.2、RIP路由的删除 华为eNSP配置专题-RIP路由协议的配置 0、概要介绍 路由信息…...

【软考】软件开发中不同对象之间的关系

1. 关联&#xff08;Association&#xff09;&#xff1a; 关联表示两个或多个对象之间的关系。这种关系可以是双向的&#xff0c;也可以是单向的。关联关系通常用于描述两个对象之间的连接&#xff0c;但不涉及对象之间的所有权或整体-部分的关系。 例子&#xff1a; 考虑一…...

GDSDecomp深度解析:Godot引擎逆向工程的技术架构与最佳实践

GDSDecomp深度解析&#xff1a;Godot引擎逆向工程的技术架构与最佳实践 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp 在游戏开发领域&#xff0c;Godot引擎以其开源特性和强大的2D/3D渲染能…...

从理论到调参:深入理解Toad中决策树与卡方分箱的差异与选择

从理论到调参&#xff1a;深入理解Toad中决策树与卡方分箱的差异与选择 在金融风控建模中&#xff0c;特征分箱是构建评分卡的核心环节。Toad工具包提供了卡方分箱&#xff08;ChiMerge&#xff09;和决策树分箱&#xff08;DT&#xff09;两种主流方法&#xff0c;但许多从业者…...

智契通项目开发周记(第二周):数据库建模与代码生成器集成

一、 本周工作概述如果说第一周是绘制蓝图&#xff0c;那么第二周就是正式“打桩”。本周的核心任务是从架构设计走向具体的数据模型落地。基于《智契通项目总体架构设计》文档中的核心能力&#xff0c;我重点完成了以下工作&#xff1a;数据库建模&#xff1a;根据业务需求&am…...

用Python的pywifi库写个WiFi密码测试工具,顺便聊聊网络安全那些事儿

Python实战&#xff1a;用pywifi构建WiFi安全测试工具的技术解析 在数字化生活高度普及的今天&#xff0c;WiFi网络已成为我们日常工作和生活的基础设施。作为开发者&#xff0c;理解WiFi连接原理并掌握相关安全知识&#xff0c;不仅能提升技术能力&#xff0c;也能更好地保护自…...

猫抓Cat-Catch:3步解决网页视频下载难题的终极方案

猫抓Cat-Catch&#xff1a;3步解决网页视频下载难题的终极方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 当我们浏览网页时&#xff0c;总会遇…...

5分钟掌握spacetime:轻量级JavaScript时区库的终极入门指南

5分钟掌握spacetime&#xff1a;轻量级JavaScript时区库的终极入门指南 【免费下载链接】spacetime A lightweight javascript timezone library 项目地址: https://gitcode.com/gh_mirrors/sp/spacetime spacetime是一款轻量级JavaScript时区处理库&#xff0c;专为简化…...

别再只用记事本了!这5款免费文本编辑器,让Win10码字效率翻倍

别再只用记事本了&#xff01;这5款免费文本编辑器&#xff0c;让Win10码字效率翻倍 每次在Windows 10上处理文档时&#xff0c;你是否还在忍受记事本那简陋的功能&#xff1f;自动保存缺失、格式混乱、批量替换困难...这些痛点我们感同身受。作为每天与文字打交道的编辑&…...

队列进行迷宫求解

解题思路: 顺序队列使用数组固定容量&#xff0c;从起点进入并标记为-1&#xff0c;代表已访问&#xff0c;出队一个方块e检查是否是终点&#xff0c;若是终点则反向回溯输出完整路径&#xff0c;若不是则寻找四个方向可通行的方块。 关键代码&#xff1a; struct Box { …...

Topit:让Mac窗口置顶变得简单高效,提升多任务处理体验

Topit&#xff1a;让Mac窗口置顶变得简单高效&#xff0c;提升多任务处理体验 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否经常在Mac上工作时被窗口遮…...

别再一上来就关SELinux了!搞懂Permissive、Enforcing、Disabled三种模式,让你的Linux服务器更安全

别再一上来就关SELinux了&#xff01;搞懂Permissive、Enforcing、Disabled三种模式&#xff0c;让你的Linux服务器更安全 第一次在服务器上部署Web应用时&#xff0c;我遇到了一个诡异的权限问题&#xff1a;Nginx明明以root身份运行&#xff0c;却无法读取我新上传的静态文件…...