Set Matrix Zeroes
MediumArrayHash TableMatrix
Solution
/** Do not return anything, modify matrix in-place instead. */
export function setZeroes(matrix: number[][]): void {
const [m, n] = [matrix.length, matrix[0].length];
let firstColHasZero = false;
let firstRowHasZero = false;
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (matrix[i][j] === 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
firstColHasZero ||= j === 0;
firstRowHasZero ||= i === 0;
}
}
}
for (let i = 1; i < m; i++) {
for (let j = 1; j < n; j++) {
if (matrix[i][0] === 0 || matrix[0][j] === 0) {
matrix[i][j] = 0;
}
}
}
if (firstColHasZero) {
for (let i = 0; i < m; i++) {
matrix[i][0] = 0;
}
}
if (firstRowHasZero) {
for (let j = 0; j < n; j++) {
matrix[0][j] = 0;
}
}
}