C++实现LeetCode数组练习题( 二 )
再利用第一行和第一列作为标记列 , 遍历整个数组 , 将中间元素为0的第一行和第一列置为0 ,
之后遍历整个数组将第一行和第一列的为0的元素的中间元素置为0 , 之后判断第一行和第一列是否含0 , 改为0即可
class Solution {public void setZeroes(int[][] matrix) {boolean row=false;//标记第一行boolean col=false;//标记第一列int m=matrix.length;//行数int n=matrix[0].length;//列数//检查第一行是否有0 标记for(int i=0;i<n;i++){if(matrix[0][i]==0){row=true;break ;}}//检查第一列是否有0 标记for(int i=0;i<m;i++){if(matrix[i][0]==0){col=true;break ;}}//遍历中间元素 把第一行和第一列置为0for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(matrix[i][j]==0){matrix[i][0]=0;matrix[0][j]=0;}}}//根据第一行第一列的结果 把中间元素置为0for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(matrix[i][0]==0||matrix[0][j]==0){matrix[i][j]=0;}}}//检查第一行是否有最开始为0的if(row){for(int i=0;i<n;i++){matrix[0][i]=0;}}//检查第一列是否有最开始为0的if(col){for(int i=0;i<m;i++){matrix[i][0]=0;}}}}
总结本篇文章就到这里了 , 希望能给你带来帮助 , 也希望您能够多多关注趣讯吧的更多内容!
推荐阅读
- 实现脱贫的根本之策是什么扶贫
- 人的自我实现结果比过程重要
- 人生的理想可以从哪些方面去实现
- 祖国统一的意义
- 梦想实现的格言大全
- 荣耀盒子怎么通过电脑实现投屏
- 如何才能实现宽带一号多拨呢
- 建行的房贷卡为什么不能转账 还房贷的建设卡可以实现转账不
- 将为国家作出更大贡献 全红婵发文:终于实现儿时愿望
- 如何更好的实现其人生价值
