73. 矩阵置零

176 阅读1分钟

73. 矩阵置零

思路和算法

  1. 我们可以用两个标记数组分别记录每一行和每一列是否有零出现。
  2. 具体地,我们首先遍历该数组一次,如果某个元素为 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;
            }
        }
    }
};