您的位置:首页 > 其它

LeetCode 073 Set Matrix Zeroes

2015-12-31 16:58 176 查看
如果发现在矩阵中存在为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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: