问题
https://leetcode.com/problems/set-matrix-zeroes/
解法
将列中有0 的信息存储在一行中, 这行满足存在一个元素为0;
接着先将存在0的行全部改为0,
再根据存储的每列信息,将有0的列置为0;
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int indexRow = -1;
for (int i=0; i< matrix.size() && indexRow == -1; ++i)
{
for (int j=0; j< matrix[0].size() && indexRow == -1; ++j)
{
if (matrix[i][j] == 0)
indexRow = i;
}
}
if (indexRow == -1)
return ;
// stroe colos to indexRow;
for (int j=0; j< matrix[0].size(); ++j)
{
for (int i=0; i < matrix.size(); ++i)
if (matrix[i][j] == 0)
{
matrix[indexRow][j] = 0;
break;
}
}
// set row;
for (int i=0; i< matrix.size(); ++i)
{
if (i == indexRow)
continue;
bool flag = false;
for (int j=0; j< matrix[0].size(); ++j)
if (matrix[i][j] == 0)
{
flag = true;
break;
}
if (flag)
for (int j=0; j< matrix[0].size(); ++j)
matrix[i][j] = 0;
}
// set col;
for (int j =0; j< matrix[0].size(); ++j)
{
if (matrix[indexRow][j] == 0)
{
for (int i=0; i< matrix.size(); ++i)
{
matrix[i][j] = 0;
}
}else
{
matrix[indexRow][j] = 0;
}
}
}
};