思路和算法
- 我们可以用两个标记数组分别记录每一行和每一列是否有零出现。
- 具体地,我们首先遍历该数组一次,如果某个元素为
0,那么就将该元素所在的行和列所对应标记数组的位置置为true。最后我们再次遍历该数组,用标记数组更新原数组即可。
var setZeroes = function (arr) {
var m = arr.length
var n = arr[0].length;
var x = new Array(m).fill(false);
var y = new Array(n).fill(false);
for (var i = 0; i < m; i++) {
for (var j = 0; j < n; j++) {
if (arr[i][j] === 0) {
x[i] = y[j] = true;
}
}
}
for (var i = 0; i < m; i++) {
for (var j = 0; j < n; j++) {
if (x[i] || y[j]) {
arr[i][j] = 0;
}
}
}
};