给定一个 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 == matrix[0].length
- 1 <= m, n <= 200
- -231 <= matrix[i][j] <= 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;
}
}
}
}
};