矩阵清0

博客内容介绍了如何解决矩阵清零的问题,讨论了不同空间复杂度的解决方案,包括使用flag矩阵和记录需要清零的行号、列号。提到了在实现过程中遇到的memset问题,以及尝试使用构造函数初始化堆空间数组的尝试。最后提供了代码实现。
摘要由CSDN通过智能技术生成

分析一道水题,我也就刷刷这种题了。。。

将矩阵0元所在行列清0

第一眼,还在想能否边遍历,边清0,这种算法少一遍遍历,但是时间复杂度是不减的,虽然我感觉效率高了,但是常数因子对于OJ是被忽视的。不过这种想法也没弄出来。

关键是空间复杂度,初看一个我想到了设置一个特殊值,最后遍历再找特殊值,这样就不用申请空间了:)但是你找不到这样一个整数,他在测试数据不可能出现的。。。于是乎还是怪怪的设置flag matrix吧。。。bool最节约空间,有0的尾true,最后遍历找true就可以了。就这么过了。

另外遇到一个奇怪的memset问题,后面细谈。

看到提示O(m+n)空间复杂度,联想到爬楼梯那题,好像有几种技巧节约空间,于是朝着这方面想,不过最后结果与这个无关= = 其实就是最后记录所有需要清0的行号,列好,用个O(m+n)数组记录下来,最后再处理一遍就可以了。

最后还有O(1)的空间复杂度,我暂时还没想到。先搁置


有个问题不能搁置,我用memset清bool 数组的时候,居然总是bug,不知道啥问题,难度堆空间不能memset? 因为长度可变,所以堆,虽然gcc是支持申请可变数组,但是二维的必须也制定后一维长度,所以还是要new,如果没弄错的话= = 

和机油伟哥讨论,他说可以堆空间调用构造函数初始化,但是编译没过,不知道啥问题= =


代码如下,不知道啥解释。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值