编写一种算法,若M*N矩阵中的某个元素为0,则将其所在的行与列置为0;
示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
分析: 遍历这个二维数组,分别生成行向量数组与列向量数组用于记录0的所在的行与列;然后再次遍历这个数组,将零所在的行与列置为0;
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
//零矩阵, 对每个数字是否为零进行相关的记录
vector<bool> row_bool(matrix.size(), false);
vector<bool> col_bool(matrix[0].size(), false);
for(int i = 0; i< matrix.size(); i++){
for(int j = 0; j<matrix[0].size(); j++){
if (matrix[i][j] == 0){
row_bool[i] = true;
col_bool[j] = true;
}
}
}
for(int i = 0; i<matrix.size(); i++){
for(int j = 0; j<matrix[0].size(); j++){
if(row_bool[i] == true)
matrix[i][j] = 0;
if(col_bool[j] == true)
matrix[i][j] = 0;
}
}
}
};


被折叠的 条评论
为什么被折叠?



