Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions leet-code/73-set-matrix-zeroes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 73-set-matrix-zeroes

Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0's.

Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]
Output: [[1,0,1],[0,0,0],[1,0,1]]


Input: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
Output: [[0,0,0,0],[0,4,5,0],[0,3,1,0]]

Constraints:

m == matrix.length
n == matrix[0].length
1 <= m, n <= 200
-231 <= matrix[i][j] <= 231 - 1


Follow up:

A straightforward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?
25 changes: 25 additions & 0 deletions leet-code/73-set-matrix-zeroes/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var setZeroes = function(matrix) {
// store which rows and columns need to be zero-ed out
const flags = {}
// find the existing zeros
for(let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] !== 0) continue;
// mark row and column to be mutated
flags[`r${i}`] = true;
flags[`c${j}`] = true;
}
}
// mutate the matrix
for(let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (flags[`r${i}`] || flags[`c${j}`]) matrix[i][j] = 0
}
}

return matrix;
};