题意:如果二维数组中有1个0, 则把那一行和那一列都变为0
要求空间复杂度小于O(m + n)
于是我的方法是O(m)空间复杂度
每次遍历1行,如果发现是0,就把 列清零flag[列号] 置1
如果那一行发现过0,则整行清0
全部行都这样处理后,再对列进行处理,如果flag为1,就清零
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int n = matrix.size(); //行
int m = matrix[0].size(); //列
int i,j;
vector<int> flag(m,0);
int cowf;
for(i = 0;i < n;i++){
cowf = 0;
for(j = 0; j < m;j++){
if(matrix[i][j] == 0){
flag[j] = 1;
cowf = 1;
}
}
if(cowf)
for(j = 0;j < m;j++)
matrix[i][j] = 0;
}
for(j = 0;j < m;j++)
if(flag[j])
for(i = 0;i < n;i++)
matrix[i][j] = 0;
}
};