用第0行和第0列来记录,某行或者某列中是否含有0元素,如果有,则代表该行或者该列需要被置0。但这样会改变第0行和第0列原有的元素,所以需要先检查第0行第0列是否有0元素,如果有,则最后置0。
置0的具体操作是,第一次遍历每个点,如果这个点为0,则把对应的行头、列头置0。
第二次遍历每个点,检查该点对应的行头、列头是否为0,如果为0,则该点置0。
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int m = matrix.size();
int n = matrix[0].size();
int flag_col0 = false, flag_row0 = false;
//因为要使用第0行和第0列来作标记,会改变其原来的数值,所以要先看看第0行和第0列有没有0
//若有0就标记true,最后再把第0行或者第0列置0。
for (int i = 0; i < m; i++) {//
if (!matrix[i][0]) {
flag_col0 = true;
}
}
for (int j = 0; j < n; j++) {
if (!matrix[0][j]) {
flag_row0 = true;
}
}
//遍历,如果某个点为0,则把其对应的第0行第0列标记为0
f