牛客热题:旋转矩阵

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

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

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

在这里插入图片描述

文章目录

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

牛客热题:旋转矩阵

题目链接

顺时针旋转矩阵_牛客题霸_牛客网 (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.mfbz.cn/a/702068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Vue3+ElementPlus+高德地图实现在浏览器中搜索地点并被标记在地图中

效果描述 在页面的输入框中输入想要查询的地点&#xff0c;在输入框的下方会提示跟输入的关键字有关地点&#xff0c;然后按下回车键或者选择下方罗列的地点即可让地图跳转到搜索的位置。 效果展示 页面渲染完成的时候 输入想要查询的地点 按下回车键之后 代码实现 <temp…

通过语言大模型类学习python,卡哪问哪(一)

代码语法学习&#xff0c;代码解析 import matplotlib.pyplot as plt import numpy as np import PIL import tensorflow as tffrom tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.models import Sequential 一、语法解析 &#xff08;…

SwanLab系列教程:用swanlab.Text记录文本

SwanLab是一个由国内团队开源的机器学习实验跟踪工具&#xff0c;相比于Tensorboard有更丰富的功能、更友好的UI界面&#xff0c;以及更重要的云端同步、多人协作功能。 安装&#xff1a;pip install swanlab 本教程主要介绍如何用swanlab.Text记录文本&#xff0c;这在做NLP…

数据安全:Web3时代的隐私保护新标准

随着数字化时代的到来&#xff0c;我们的生活已经完全依赖于互联网和数据交换。然而&#xff0c;随之而来的是对个人隐私和数据安全的日益关注。在这个信息爆炸的时代&#xff0c;数据泄露、个人隐私侵犯和网络攻击等问题日益突出&#xff0c;而Web3技术的崛起正带来了一种全新…

乡村振兴的科技创新引领:加强农业科技研发,推广先进适用技术,提高农业生产效率,助力美丽乡村建设

目录 一、引言 二、农业科技研发的重要性 &#xff08;一&#xff09;提升农业生产效率 &#xff08;二&#xff09;促进农业产业升级 &#xff08;三&#xff09;保障粮食安全 三、加强农业科技研发的策略 &#xff08;一&#xff09;加大投入力度 &#xff08;二&…

Shiro有key但无回显利用链子-JRMP大法

前言 shiro在手天下我有&#xff0c;扫出key直接梭哈getshell&#xff0c;横扫内网。但要是像这种情况&#xff0c;直接下班拜拜跑路&#xff0c;没有链子玩毛线… 直到出现了这么一个工具可以通过JRMP协议探测是否存在漏洞&#xff0c;很显然上面工具是做不到的&#xff0c;实…

有什么方便的ai人工智能写作软件?7个软件让你快速进行写作

有什么方便的ai人工智能写作软件&#xff1f;7个软件让你快速进行写作 当然&#xff01;这里有几款其他的AI人工智能写作软件&#xff0c;可以帮助你快速进行写作&#xff1a; AI创作云 功能特点&#xff1a; 这是一款基于AI的写作助手&#xff0c;可以帮助你生成高质量的文章…

并发编程理论基础——可见性、原子性和有序性问题(一)

核心问题&#xff1a;分工&#xff0c;同步&#xff0c;互斥 分工&#xff1a;如何高效地拆解任务并分配给线程 生产者-消费者模式、Thread-Per-Message模式、Worker-Thread模式、ComplateableFuture和CompletionServiceJava SDK 并发包里的 Executor、Fork/Join、Future 本质上…

springboot宠物领养管理系统计算机毕业设计源码46534

摘 要 网络发布信息有其突出的优点&#xff0c;即信息量大&#xff0c;资源丰富&#xff0c;更新速度快等&#xff0c;很符合人们希望以捷、便利的方式获得最多最有效信息的要求。本系统就是一个网上宠物领用的系统&#xff0c;为宠物爱好者提供一个信息发布的平台&#xff0c…

C++三角函数和反三角函数的使用

注意C中三角函数使用的是弧度制(3.14) 。示例图中角为30度 sin(30/180*PI);//已知角度&#xff0c;求正弦 cos(30/180*PI);//已知角度&#xff0c;求余弦 tan(30/180*PI);//已知角度&#xff0c;求正切asin(a/c);//已知正弦值&#xff0c;求弧度 acos(b/c);//已知余弦值&#x…

html和css创建一个简单的网页

html代码及解析 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS Example</title><lin…

android studio CreateProcess error=2, 系统找不到指定的文件

【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候&#xff0c;编译遇到的这个报错&#xff1a; CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上&#xff0c;此时需要根据自己的gra…

Vue3【十九】自定义Hooks钩子 将数据和方法分组

Vue3【十九】自定义Hooks钩子 将数据和方法分组 Vue3【十九】自定义Hooks钩子 将数据和方法分组 每个分组都可以放置 各种生命周期钩子 分组和可以使用计算属性等 案例截图 目录结构 代码 person.vue <template><div class"person"><h2>Vue3自定…

C++中的结构体——结构体指针

作用&#xff1a;通过指针访问结构体中的成员 利用操作符 -> 可以通过结构体指针访问结构体属性 示例 运行结果

『大模型笔记』Anthropic团队:什么是大模型的可解释性!

Anthropic团队:什么是大模型的可解释性! 文章目录 一. Anthropic团队:什么是大模型的可解释性!二. 参考文献我的小红书中英文双语视频:Anthropic团队:什么是大模型的可解释性!一. Anthropic团队:什么是大模型的可解释性! 我在Anthropic的可解释性团队工作。可解释性是…

诊所管理系统软件的特征有哪些

在医疗行业快速迈进数字化时代的背景下&#xff0c;诊所管理系统的出现&#xff0c;为诊所的管理和服务模式带来重大变革&#xff0c;不仅极大地提升了工作效率&#xff0c;还显著增强了患者的就医体验&#xff0c;为医疗体系的全面升级注入了新的活力。 首先&#xff0c;来和大…

Vue23-过滤器

一、效果图 二、好用的时间戳三方工具 该三方工具比较大 推荐使用 dayjs的用法&#xff1a; 三、过滤器的使用 3-1、计算属性实现 3-2、methods函数实现 3-3、过滤器filters属性实现 过滤器的本质就是函数&#xff01;&#xff01;&#xff01; 1、过滤器-未传参 默认将管道…

售后服务体系认证的优势与意义

在现代商业环境中&#xff0c;售后服务已经成为企业与客户建立长期关系的重要桥梁。售后服务体系认证不仅是对企业服务能力的认可&#xff0c;更是提升企业竞争力的关键手段。本文将详细阐述售后服务体系认证的优势与意义&#xff0c;探讨其对企业和客户的积极影响。 优质的售后…

init函数

【1】init函数&#xff1a;初始化函数&#xff0c;可以用来进行一些初始化的操作 每一个源文件都可以包含一个init函数&#xff0c;该函数会在main函数执行前&#xff0c;被Go运行框架调用。 【2】全局变量定义&#xff0c;init函数&#xff0c;main函数的执行流程&#xff1f…

解决While loop问题 - Python

当我们在使用 while 循环时&#xff0c;需要确保循环的终止条件最终会被满足&#xff0c;否则循环将会无限执行下去。通常情况下&#xff0c;我们可以在循环内部修改循环控制变量&#xff0c;使得终止条件得以满足。 1、问题背景 一位开发者在使用 Python 开发一个基于文本的游…