给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
示例 1:

输入:matrix = \[1,1,1,1,0,1,1,1,1]
输出:\[1,0,1,0,0,0,1,0,1]
示例 2:

- 输入:matrix = \[0,1,2,0,3,4,5,2,1,3,1,5]
输出:\[0,0,0,0,0,4,5,0,0,3,1,0]
提示:
- m == matrix.length
- n == matrix0.length
- 1 <= m, n <= 200
- -231 <= matrixij <= 231 - 1
法1:标记数组
cpp
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
vector<bool> flagRow(matrix.size(),false);
vector<bool> flagCol(matrix[0].size(),false);
for(int row = 0;row<matrix.size();row++){
for(int col = 0;col<matrix[0].size();col++){
if(matrix[row][col]==0){
flagRow[row] = true;
flagCol[col] = true;
}
}
}
for(int row = 0;row<matrix.size();row++){
for(int col = 0;col<matrix[0].size();col++){
if (flagRow[row]||flagCol[col]){
matrix[row][col] = 0;
}
}
}
}
};