牛客热题:旋转矩阵

news2024/11/30 11:33:11

📟作者主页:慢热的陕西人

🌴专栏链接:力扣刷题日记

📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言

在这里插入图片描述

文章目录

  • 牛客热题:旋转矩阵
    • 题目链接
    • 方法一:借用额外空间
      • 思路
      • 代码
      • 复杂度
    • 方法二:原地旋转
      • 思路
      • 代码
      • 复杂度

牛客热题:旋转矩阵

题目链接

顺时针旋转矩阵_牛客题霸_牛客网 (nowcoder.com)

方法一:借用额外空间

思路

step1:创建额外的数组空间

step2:遍历原数组

step3:遍历数组的同时,将原数组中的元素,转换坐标后放入到旋转之后的数组内部

代码

 vector<vector<int>> rotateMatrix(vector<vector<int> >& mat, int n) 
    {
        vector<vector<int>> res(n, vector<int>(n));

        for(int i = 0; i < n; ++i)
            for(int j = 0; j < n; ++j)
            {
                res[j][n - i - 1] = mat[i][j];
            }

        return res;
    }

复杂度

时间复杂度: O ( N 2 ) O(N ^ 2) O(N2), 遍历整个矩阵

空间复杂度: O ( N 2 ) O(N ^ 2) O(N2),利用了额外的数组空间来存储答案

方法二:原地旋转

思路

step1:先将原矩阵沿着对角线进行交换元素(注意这里第二个内部循环的上界是i,如果为n的话,相当于交换过来的元素,又交换过去了,相当于没交换)

spep2:将每一行的在本行内进行旋转就可以得到结果了

以样例为例子

begin:

123
456
789

step1:

147
258
369

step2:

741
852
963

代码

    vector<vector<int>> rotateMatrix(vector<vector<int> >& mat, int n) 
    {
        for(int i = 0; i < n; ++i)
            for(int j = 0; j < i; ++j)
            {
                swap(mat[i][j], mat[j][i]);
            }
        
        for(int i = 0; i < n; ++i)
            reverse(mat[i].begin(), mat[i].end());

        return mat;
    }

复杂度

时间复杂度: O ( N 2 ) O(N ^ 2) O(N2),相当于遍历整个矩阵的时间复杂度

空间复杂度:O(1), 没有借助额外的空间实现了旋转矩阵

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

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

相关文章

Exploring Performance and Cost Optimization with ASIC-Based CXL Memory——论文阅读

EuroSys 2024 Paper CXL论文阅读笔记整理 问题 随着内存密集型应用程序对内存需求的增加&#xff0c;受限于物理限制&#xff0c;如DDR DIMM插槽的可用性和发热问题&#xff0c;以及使用高密度DIMM的成本考虑&#xff0c;现代应用程序的内存需求很容易超过单机的内存容量[2&a…

【教程】使用立创EDA打开JSON格式的PCB及原理图

这里写目录标题 一、将PCB和原理图放同一文件夹二、打开嘉立创EDA并导入.zip文件三、选择.zip文件并选择 “导入文件并提取库” 一、将PCB和原理图放同一文件夹 并打包成.zip文件 二、打开嘉立创EDA并导入.zip文件 嘉立创 我这里用的网页端&#xff0c;客户端下载页面拉到…

大模型应用产品指北

一、试用类型 计算机视觉Computer Vision&#xff1a;Text-to-image(文生图) 二、国内产品 Aliyun通义千问 【体验】 可以替代Stable Diffusion、Midjourney;支持风格、滤镜; [传送门&#xff1a;通义万相] 【体验】Transformer架构&#xff1b;中英双语&#xff1b;开源可以…

疑惑...2024年是不是转行AI产品经理的好时机?

前言 这两年AI突然“火起来” 了 &#xff0c;算是出现了一个“大转折”。 因为就在这2年里&#xff0c;全球所有“大厂”几乎同一时间挤破头在跟进AI技术&#xff0c;从ChatGPT发布&#xff0c;到谷歌、Facebook、亚马逊等都紧跟其后&#xff0c;再到国内百度、腾讯、阿里、…

北斗野外应急呼叫柱:准确定位,一键语音对讲,自定义图传,野外作业安全通信新标杆

在当前云计算、大数据、5G等前沿技术迅猛发展的大背景下&#xff0c;工业控制系统网络化、数字化发展进程的不断深入&#xff0c;其对于工业通讯技术的需求也日益提升&#xff0c;而应急通讯作为工业通讯领域中的一种形式&#xff0c;伴随着国家对其重视程度的加深&#xff0c;…

【数组】【双指针】三数之和

打算冲一把算法类比赛&#xff0c;之前一直对算法提不起兴趣&#xff0c;也有我自己对它的抵触&#xff0c;本身算法也比较菜。 但现在打算勤勤恳恳刷题&#xff0c;踏踏实实总结&#xff0c;冲&#xff01; 数组——双指针 三数之和 该题力扣网址 错误做法 三重循环框架&a…

Windows 11中查找和删除旧文件的几种方法,总有一种适合你

序言 如果你的电脑存储空间不足,最好的办法就是找到并删除旧的、不需要的文件。Windows 11提供了多种方法来查找这些占用存储空间的项目,我们将在本指南中向你展示这些方法以及如何使用它们。 使用存储感知 存储感知是Windows 11的内置功能,可帮助自动清理旧文件。你可以…

2024年第三届数据统计与分析竞赛(B题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 详细请查 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024年第三届数据统计与分析竞赛&#xff08;B题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有…

宠物空气净化器性能大比拼,美的、希喂、霍尼韦尔哪个牌子最好!

养猫最头疼的就是家里到处都是猫浮毛&#xff0c;铲屎官想家里干净卫生&#xff0c;就得想办法处理好猫浮毛&#xff0c;不及时处理&#xff0c;浮毛长期飘浮在空气中&#xff0c;对铲屎官的身体很容易造成威胁。针对这个问题&#xff0c;使用专门的宠物空气净化器&#xff0c;…

解析Facebook对当代文化传播的影响力

Facebook作为全球最大的社交媒体平台之一&#xff0c;承载着巨大的文化传播功能&#xff0c;对当代文化产生了深远的影响。从社会交流、价值观念到艺术创作和政治动态&#xff0c;Facebook已经成为了人们获取信息、表达观点和交流想法的重要平台。本文将深入解析Facebook对当代…

源代码加密的十个关键点

源代码加密是一种安全措施&#xff0c;其目的是为了保护软件的源代码不被未授权的个人或实体访问或泄露。源代码是软件应用程序的基础&#xff0c;它包含了程序的逻辑结构、核心算法以及设计理念。由于源代码承载了软件的核心知识和创新&#xff0c;因此它具有极高的商业价值和…

C语言—数据在内存中的存储

1.整数在内存中的存储 文章回顾&#xff08;C语言—操作符详解&#xff09; 整数的2进制表示方式有三种&#xff0c;即原码、反码和补码。 有符号的整数&#xff0c;三种表示方式均有符号位和数值位两部分&#xff0c;符号位都是用0表示“正”&#xff0c;用1表示“负”&…

失眠焦虑的饮食小建议

在快节奏的现代生活中&#xff0c;失眠和焦虑已成为许多人的常见问题。除了寻求专业的心理咨询和医疗帮助外&#xff0c;合理的饮食习惯也是缓解这些症状的重要途径。本文将为大家提供一些关于失眠焦虑的饮食小建议&#xff0c;希望能对大家有所帮助。 一、均衡膳食&#xff0c…

Rhinoceros 8 for Mac(犀牛8 mac版) v8.8.24163中文激活版

Rhino 8是一款功能强大的三维构建软件&#xff0c;它可以帮助用户创建各种类型的3D模型&#xff0c;包括产品设计、建筑设计、工业设计计划等。Rhino 7具有直观的界面和丰富的工具库&#xff0c;让用户可以快速轻松地进行建模、编辑、分析和漂染。 Rhino 8支持多种文件格式的导…

期权和股票有什么区别?

今天带你了解期权和股票有什么区别&#xff1f;股票和期权都是投资产品&#xff0c;但它们却是两种截然不同的交易模式&#xff0c;在开户要求上也有很多差别。 期权和股票有什么区别&#xff1f; 权利与义务&#xff1a; 股票&#xff1a;代表公司的所有权的一部分&#xff…

make和Cmake都有什么区别?(内附使用详解)

Make和Cmake make和Cmake的区别&#xff1a; 角色和功能: make: 是一个构建工具&#xff0c;它的任务是读取 Makefile 文件&#xff0c;并基于这些文件中的指令执行具体的构建操作。Makefile 文件包含了如何构建项目的规则&#xff0c;make 负责解析这些规则并执行必要的命令来…

电脑上好用的能够提醒自己的软件有哪些

在繁忙的工作和生活中&#xff0c;我时常感到头脑中的思绪如同乱麻一般&#xff0c;难以理清。会议、项目截止日期、家庭琐事&#xff0c;这些重要的事务有时会在不经意间从我的记忆中溜走。没有一款提醒软件&#xff0c;我仿佛就像是在没有指南针的海洋中漂泊&#xff0c;时常…

一户一表集中抄表:现代化大都市管理的新模式

1.定义分析 一户一表集中抄表是一种现代化能源管理体系方法&#xff0c;广泛应用于电力工程、供水公司、天然气等行业。这个模式下&#xff0c;每一个用户都有独立的电能表&#xff0c;这种表集中化在一处进行在线数据载入&#xff0c;大大提升了抄水表效率精确性。用这种方式…

贝壳找房: 为 AI 平台打造混合多云的存储加速底座

贝壳机器学习平台的计算资源&#xff0c;尤其是 GPU&#xff0c;主要依赖公有云服务&#xff0c;并分布在不同的地理区域。为了让存储可以灵活地跟随计算资源&#xff0c;存储系统需具备高度的灵活性&#xff0c;支持跨区域的数据访问和迁移&#xff0c;同时确保计算任务的连续…

JAVA代码审计之SQL注入代码审计

前言 SQL注入漏洞是对数据库进行的一种攻击方式。其主要形成方式是在数据交互中&#xff0c;前端数据通过后台在对数据库进行操作时&#xff0c;由于没有做好安全防护&#xff0c;导致攻击者将恶意代码拼接到请求参数中&#xff0c;被当做SQL语句的一部分进行执行&#xff0c;…