73.矩阵置零

2020-03-02  本文已影响0人  最尾一名

原题

https://leetcode-cn.com/problems/set-matrix-zeroes/

解题思路

先将对应行和列的部分改为一个标识(如果本来是 0 则不改),
再将所有标志位改为 0。

代码

/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
const setString = (matrix, x, y) => {
    for (let i = 0; i < matrix[0].length; ++i) {
        matrix[x][i] = (matrix[x][i] === 0 ? 0 : 's');
    }
    for (let j = 0; j < matrix.length; ++j) {
        matrix[j][y] = (matrix[j][y] === 0 ? 0 : 's');
    }
}

const setZero = (matrix) => {
    for (let i = 0; i < matrix.length; ++i) {
        for (let j = 0; j < matrix[0].length; ++j) {
            if (matrix[i][j] === 's') {
                matrix[i][j] = 0;
            }
        }
    }
}

var setZeroes = function(matrix) {
    const m = matrix.length;
    if (!m) return;
    const n = matrix[0].length;
    for (let i = 0; i < m; ++i) {
        for (let j = 0; j < n; ++j) {
            if (matrix[i][j] === 0) {
                setString(matrix, i, j);
            }
        }
    }
    setZero(matrix);
};

复杂度

上一篇 下一篇

猜你喜欢

热点阅读