LeetCode 073 Set Matrix Zeroes
2015-12-31 16:58
176 查看
如果发现在矩阵中存在为0的元素,那么将这个元素所在的行和列的所有元素都设置为0。
在设置的时候当然要考虑这行和这列中其他的元素是不是为0,以免覆盖。所以将为0的元素记录在边界上,觉得这是个非常巧妙的办法,最后遍历的时候根据边界的信息来进行判断这个元素是不是应该设置为0.
在设置的时候当然要考虑这行和这列中其他的元素是不是为0,以免覆盖。所以将为0的元素记录在边界上,觉得这是个非常巧妙的办法,最后遍历的时候根据边界的信息来进行判断这个元素是不是应该设置为0.
class Solution { public: void setZeroes(vector<vector<int>>& matrix) { int mm=matrix.size(); int nn=matrix[0].size(); int row=0; int col=0; for(int ii=0;ii<mm;ii++){ for(int jj=0;jj<nn;jj++){ if(matrix[ii][jj]==0){ if(ii==0)row=1; if(jj==0)col=1; matrix[ii][0]=0; matrix[0][jj]=0; } } } for(int ii=1;ii<mm;ii++){ for(int jj=1;jj<nn;jj++){ if((!matrix[ii][0])||(!matrix[0][jj])) matrix[ii][jj]=0; } } if(row)for(int ii=0;ii<nn;ii++)matrix[0][ii]=0; if(col)for(int ii=0;ii<mm;ii++)matrix[ii][0]=0;//最后一步检查的遍历可以通过逆向来遍历,如下面的代码 } };
for(int i=m-1;i>=0;i--) for(int j=n-1;j>=0;j--) if(i == 0 && row == true || j == 0 && col == true || matrix[0][j] == 0 || matrix[i][0] == 0 ) matrix[i][j] = 0;
相关文章推荐
- 1217 递归下降语法分析程序设计
- Maven常用命令
- Week7-2POS tagging
- RHEL6.3 yum源更新
- angularjs 当transclude:true or elemet时如何在link函数中取得要替代模板中ng-transclude的那部分内容
- 智能设备相关Arduino+esp8266 +阿里云eds + 百度云推动 流程 简约 配置指南
- jvm学习总结
- c++之我们为什么选择使用智能指针
- Storyboard
- Lua 中改变console的输出字体颜色
- android中Invalidate和postInvalidate的用法
- Mac系统MySQL安装、设置及卸载
- 史上最易懂的Android jni开发资料--NDK环境搭建
- Android中dip、dp、sp、pt和px的区别详解
- lib 库 vs搜索路径的添加
- 从朴素贝叶斯分类器到贝叶斯网络(上)
- ASC(22)H(大数+推公式)
- 教你四招辨别强庄股见顶
- 预处理语句
- 转型 2015