[leedcode 73] Set Matrix Zeroes
2015-07-14 17:10
239 查看
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
public class Solution { public void setZeroes(int[][] matrix) { //题目要求不使用额外空间,因此需要借助矩阵本身的空间来辅助存储, //这里借用了矩阵的第一行和第一列来辅助纪录该行或该列是否为0.由于第一行第一列自身发生了改变,再用两个变量记录第一行和第一列是否为 //0即可。 int rlen=matrix.length; int clen=matrix[0].length; int row=1; int col=1; for(int i=0;i<rlen;i++){ if(matrix[i][0]==0){ col=0; break; } } for(int i=0;i<clen;i++){ if(matrix[0][i]==0){ row=0; break; } } for(int i=1;i<rlen;i++){//注意:不需要特殊考虑第1行和第1列,因为只需保证原值即可!! for(int j=1;j<clen;j++){ if(matrix[i][j]==0){ matrix[i][0]=0; matrix[0][j]=0; } } } for(int i=1;i<rlen;i++){ for(int j=1;j<clen;j++){ if(matrix[i][0]==0||matrix[0][j]==0) matrix[i][j]=0; } } if(row==0){ for(int i=0;i<clen;i++){ matrix[0][i]=0; } } if(col==0){ for(int i=0;i<rlen;i++){ matrix[i][0]=0; } } } }
相关文章推荐
- spring IOC 集合collections注入
- 求一个字符串中不含重复元素的最大子串
- java变量类型及注释
- 工厂模式—接口
- git命令行的使用
- dbPool sybase connection pool
- Hibernate的Session使用
- 转:HTML5离线篇收藏--- cache manifest
- dbPool sybase connection pool
- UI3_UITableViewDelete(多选)
- C# 多线程task
- c++ try throw简单例子
- Spring2.5+Struts1.+Hibernate3.3完美整合
- 解决nginx无法显示图片的问题
- install ipython & notebook
- s3c2416 sdram初始化各寄存器设置
- 一个成功的Git分支模型
- 解决spring mvc 乱码问题
- 2012年5月SAT香港真题解析
- oracle用户连接不上,总被锁