【算法】矩阵置零

针对这道力扣题解写一点笔记。

题目分析

首先这类矩阵题目,在初次接触力扣时感觉很难,目前看来主要框架就是双循环,注意分析行和列即可。

这道题最难的地方是他限制了对存储空间的使用,因此需要实现原地计算就要合理设计算法。

如果使用O(1)的存储空间,就需要利用原矩阵的行和列去存储信息,方法二中给出的算法用到的是第一行和第一列分别存储对应列和对应行是否为0,这就造成了对第一行和第二行的改动,这种改动首先是不可逆的,其次是递增的。

如何理解不可逆?

如果第1行没有0,且最终分析的结果只有第5列有0,那么得到的结果矩阵中第5列应该是全0的,包括第一行的。此时会发现无法判定第一行原来是否有0,因为已经发生了更改。

因此需要常数的空间去记录第一行和第一列原来是否有0(方法三将两个常数变成了一个常数)

如何理解递增?

初次看到这个算法会有一个疑问,这样贸然改变第一行和第一列的数据,会对原来的数据造成影响吗?

仔细分析之后发现,如果除了第一行和第一列之外的数据有0,那么对应行和对应列本身就会被变成0,因此是无影响的,这样做只是使得原矩阵向目标矩阵更加接近。

方法三

方法三相对于方法二而言的改动就是用第一行第一列来存储第一行的信息,然后利用倒序遍历的方式使得该信息可以保留到完成上图中第二个流程。

相关推荐
涉密IT资质笔记3 分钟前
涉密资质投入产出分析模型:时间成本、四块成本构成与 ROI 决策框架
java·开发语言·算法
木井巳5 分钟前
【BFS 解决拓扑排序】火星词典
java·算法·leetcode·广度优先·宽度优先·图搜索算法
北风toto16 分钟前
KMP 算法详解:从暴力匹配到 O(n+m) 的字符串搜索
java·开发语言·算法
林澈在路上23 分钟前
哪个写歌软件可以用自己声音?MELO音乐详解
人工智能·python·算法
爱读书的小胖23 分钟前
Codewars Sum of a Sequence Hard Core Version C 解题分析
c语言·数据结构·算法
不会就选b24 分钟前
算法日常・每日刷题--<动态规划>24
算法·动态规划
Shaoshing35 分钟前
二分模板(左右查询)
java·算法·二分
蒲公英eric44 分钟前
线性回归与正则化:从最小二乘到岭回归、LASSO
人工智能·算法·数学建模·线性回归·岭回归·最小二乘·lasso
碧海银沙音频科技研究院5 小时前
炬芯ATS3089X手表的HFP通话不自动路由到设备BT的问题解决
网络·人工智能·嵌入式硬件·算法