链接:73. 矩阵置零
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
if(matrix.size() == 0) {
return;
}
// visited记录的是matrix[i][j]为0的位置,是否被访问过
vector<vector<bool>> visited(matrix.size(), vector<bool>(matrix[0].size(), false));
for(int i = 0; i < matrix.size(); ++i) {
for(int j = 0; j < matrix[i].size(); ++j) {
if(matrix[i][j] == 0 && !visited[i][j]) {
// 将i这行变为0,并且标记哪些0是本次变为0的,而不是原来matrix本身是0的
for(int col = 0; col < matrix[i].size(); ++col) {
if(matrix[i][col] != 0) {
matrix[i][col] = 0;
visited[i][col] = true;
}
}
// 将j这列变为0,并且标记哪些0是本次变为0的,而不是原来matrix本身是0的
for(int row = 0; row < matrix.size(); ++row) {
if(matrix[row][j] != 0) {
matrix[row][j] = 0;
visited[row][j] = true;
}
}
}
}
}
}
};