数组:题号73、

这篇博客详细解析了编程题目73的解决思路,主要涉及数组操作和矩阵变换。通过实例阐述了如何有效地实现数组元素的交换,提升算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

73、矩阵置零                                                                                                               点击此处返回总目录

【题目】

     

 

【分析】

     O(mn)的方案,实在想不出来。。。

     O(m+n)的方案:可以使用HashSet来做。分别用两个HashSet来存放数组中0元素的行坐标和列坐标。然后遍历HashSet,把元素置零。

     本题要求原地算法,即使用常数空间。可以使用某一行和某一列来代替上面方案中的HashSet。具体使用哪一行那一列呢?有两种思路。

     思路一:使用第一行、第一列来存储。

                   step1:首先记录一下第一行、第一列有没有0元素。

                   step2:把其他位置的0元素的行号、列号记录到第一行和第一列上。

                   step3:把除第一行第一列外的该置0的行和列置零。

                   step4:第一行第一列需要置零的话就置零。    

      思路二:首先找到第一个0元素,使用它所在的行和列来存储。

                   

 

      第一种思路没有第二种思路好。

 

【代码】

 

 

【运行结果】

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值