Question:
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Solution:
暴力求解,第一遍扫描矩阵记录哪些行和哪些列需要变为0;然后再一遍循环让相应的行列变为0。
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
if (matrix.size() == 0) return;
int m = matrix.size(), n = matrix[0].size();
int row[m] = {0}, column[n] = {0};
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == 0) {
row[i] = 1;
column[j] = 1;
}
}
}
for (int i = 0; i < m; i++) {
if (row[i]) {
for (int j = 0; j < n; j++)
matrix[i][j] = 0;
}
}
for (int i = 0; i < n; i++) {
if (column[i]) {
for (int j = 0; j < m; j++)
matrix[j][i] = 0;
}
}
}
};