刷题小计六:矩阵

news/2025/2/11 20:28:17/

73.矩阵置零 mid

矩阵置零 

①先使用两个变量(row_0 & col_0),记录「首行 & 首列」是否该被置零

②在「非首行首列」的位置,存储置零信息到首行首列

        // 把第一行第一列作为标志位for (int i = 1; i < row; i++) {for (int j = 1; j < col; j++) {if (matrix[i][j] == 0) {matrix[i][0] = 0;matrix[0][j] = 0;}}}

置零,遍历第二次

        for (int i = 1; i < row; i++) {for (int j = 1; j < col; j++) {if (matrix[i][0] == 0 || matrix[0][j] == 0){matrix[i][j] = 0;}}}

④使用 r0 & c0 ,置零「首行 & 首列」 

54.螺旋矩阵 mid

螺旋矩阵

循环打印: “从左向右、从上向下、从右向左、从下向上” 四个方向循环打印。
根据边界打印,即 将元素按顺序添加至列表 res 尾部。
边界向内收缩 1 (代表已被打印)。
判断边界是否相遇(是否打印完毕),若打印完毕则跳出。

48.旋转图像 mid

旋转图像

对于矩阵任意第 i 行、第 j 列元素 matrix[i][j] ,矩阵旋转 90º 后「元素位置旋转公式」为:

由于第 1 步 D→A 已经将 A 覆盖(导致 A 丢失),此丢失导致最后第 4 步 A→B 无法赋值。为解决此问题,考虑借助一个「辅助变量 tmp 」预先存储 A 

根据开头的元素旋转公式:

int temp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][i];
matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
matrix[j][n - 1 - i] = temp;

矩阵大小 n 为偶数时,取前 n / 2行、前  n / 2  列的元素为起始点;

矩阵大小 n 为奇数时,取前  n / 2行、前  (n + 1) / 2  列的元素为起始点; 风车型旋转

 

复杂度分析

时间复杂度 O(N ^2) : 其中 N 为输入矩阵的行(列)数。需要将矩阵中每个元素旋转到新的位置,即对矩阵所有元素操作一次,使用 O(N ^ 2) 时间。
空间复杂度 O(1) : 临时变量 tmp 使用常数大小的额外空间。值得注意,当循环中进入下轮迭代,上轮迭代初始化的 tmp 占用的内存就会被自动释放,因此无累计使用空间。 

部分图文作者:Krahets
链接:https://leetcode.cn/problems/rotate-image/solutions/1228078/48-xuan-zhuan-tu-xiang-fu-zhu-ju-zhen-yu-jobi/
来源:力扣(LeetCode)

240.搜索二维矩阵 mid

搜索二维矩阵 II

抽象二叉搜索树


http://www.ppmy.cn/news/1538902.html

相关文章

【工具使用】VCS仿真暂停dump波形_保存session,restore session

在仿真运行的过程中我们知道使用ctrlc可以进入ucli的交互界面&#xff0c;然后使用fsdbDumpflush将波形dump下来&#xff0c;此时查看完波形之后再输入run&#xff0c;仿真继续进行。这指出如果不使用fsdbDumpflush仿真路径下会产生较多关于fsdb的相关文件&#xff0c;输入指令…

RFID技术在汽车焊接生产线的智能应用与优化

RFID技术在汽车焊接生产线的智能应用与优化 随着科技的不断发展&#xff0c;智能化生产已经成为制造业的必然趋势&#xff0c;这就要求着生产方式也要随着发生改变。在汽车制造领域&#xff0c;RFID技术的应用&#xff0c;提升了汽车制造业的工作效率与管理水平。 在传统的在…

C语言刷题 LeetCode 30天挑战 (十)Stack 栈 (MinStack)

这个题目要求你设计一个特殊的栈&#xff08;MinStack&#xff09;&#xff0c;不仅要具备普通栈的基本功能&#xff08;push、pop 和 top&#xff09;&#xff0c;还要能够在常数时间内&#xff08;O(1) 时间复杂度&#xff09;获取栈中的最小元素&#xff08;getMin&#xff…

算法题总结(十五)——贪心算法(下)

1005、K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数组 可…

2025考研今天开始预报名!攻略请查收

2025年全国硕士研究生招生考试 今天起开始预报名 有什么流程&#xff1f;需要准备哪些信息&#xff1f; 这份考研报名攻略速查收 ↓↓↓ 全国硕士研究生招生考试报名包括网上报名和网上确认两个阶段&#xff1a; 网上预报名时间为10月9日至10月12日&#xff08;每日9&#xff1…

系统分析师要换教材了,新增大量「案例实践」,下半年可能这样考……

最近&#xff0c;在“中国权威的出版物数据服务平台”搜索新版系统分析师教程时发现&#xff1a; 原定的新教程出版日期已经从8月更新至10月&#xff0c;而且教程目录已经更新&#xff0c;内容变化也可以看出来了。 那么&#xff0c;新教程出版会对我们下半年的系分考试有哪些…

初学Qt之环境安装与 hello word

环境&#xff1a; Qt Creator 4.11.0 (Community) Qt 5.14.0 目录 1.Qt环境配置 1.1 下载Qt 5.14.0 1.2 注册Qt账号 1.3 安装Qt 1.4 配置环境变量 2.创建项目 2.1 创建一个项目 2.2 初始代码解析 2.3 可视化GUI ​编辑 2.4 hello word 2.4.1 可视化hello word …

华为OD机试 - 小明找位置 - 二分查找(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…