思想
用x,y来记录0所在的行和列即可
代码
/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var setZeroes = function(matrix) {
let h = matrix.length
let w = matrix[0].length
let x= new Set()
let y= new Set()
for (let i = 0; i < h; i++) {
for (let j = 0; j < w; j++) {
if(matrix[i][j] === 0){
x.add(i)
y.add(j)
}
}
}
for (let i = 0; i < h; i++) {
if(!x.has(i)){
for (let j = 0; j < w; j++) {
if(y.has(j)){
matrix[i][j] = 0
/**
*使用forEach的时候,lc里面直接修改matrix[i][j]报错,item[j]也不行,
* 不过在IDE里面直接修改yItem等于0不行
*/
}
}
}else {
matrix[i].fill(0)
}
}
};