📖 Scenario: Imagine you have a grid representing a garden with plants. Some spots have dead plants marked as zero. You want to mark the entire row and column of any dead plant as dead (zero) to prepare for replanting.
🎯 Goal: You will write a program to update the garden grid in place. If any cell is zero, set its entire row and column to zero without using extra space for another grid.
📋 What You'll Learn
Create a 2D array called garden with exact values
Create two variables rows and cols for garden dimensions
Implement the logic to set rows and columns to zero in place
Print the updated garden array
💡 Why This Matters
🌍 Real World
This technique is useful in image processing, spreadsheet software, and grid-based games where marking entire rows and columns based on conditions is needed.
💼 Career
Understanding in-place matrix manipulation is important for software engineers working with data transformation, optimization, and memory-efficient algorithms.
Progress0 / 4 steps
1
Create the garden grid
Create a 2D array called garden with these exact values: [[1,1,1],[1,0,1],[1,1,1]]
DSA Javascript
Hint
Use const garden = [[1,1,1],[1,0,1],[1,1,1]]; to create the grid.
2
Set up garden dimensions
Create two variables called rows and cols that store the number of rows and columns in garden respectively
DSA Javascript
Hint
Use garden.length for rows and garden[0].length for cols.
3
Implement in-place zero setting
Write code to set entire rows and columns to zero in garden if any cell is zero, using the first row and first column as markers. Use variables rows and cols for dimensions
DSA Javascript
Hint
Use the first row and column as markers to remember which rows and columns to zero out.
4
Print the updated garden grid
Print the garden array after modification using console.log(garden)
DSA Javascript
Hint
Use console.log(garden) to print the updated grid.
Practice
(1/5)
1. What is the main goal of the Set Matrix Zeroes In Place problem?
easy
A. Find the sum of all zero elements in the matrix.
B. Modify the matrix so that if an element is 0, its entire row and column become 0 without using extra space.
C. Count how many zeroes are in the matrix.
D. Sort the matrix rows and columns after setting zeroes.
Solution
Step 1: Understand the problem requirement
The problem asks to set entire rows and columns to zero if any element in them is zero, modifying the matrix directly without extra space.
Step 2: Differentiate from other tasks
Options B, C, and D describe different tasks like summing, counting, or sorting, which are not the goal here.
Final Answer:
Modify the matrix so that if an element is 0, its entire row and column become 0 without using extra space. -> Option B
Quick Check:
Goal = Modify matrix in place [OK]
Hint: Focus on in-place zeroing of rows and columns [OK]
Common Mistakes:
Thinking the problem is about counting zeroes
Assuming extra space is allowed
Confusing with sorting or summing tasks
2. Which of the following JavaScript code snippets correctly initializes a 3x3 matrix filled with zeros?
easy
A. const matrix = [[0,0,0],[0,0],[0,0,0]];
B. const matrix = Array(3).fill(Array(3).fill(0));
D. const matrix = new Array(3).map(new Array(3).fill(0));
Solution
Step 1: Check each initialization method
const matrix = Array(3).fill(Array(3).fill(0)); uses fill with the same inner array reference, causing all rows to point to the same array, which is incorrect.
Step 2: Identify correct independent row creation
const matrix = Array.from({ length: 3 }, () => Array(3).fill(0)); uses Array.from with a function to create new arrays for each row, correctly initializing independent rows filled with zeros.
Hint: Use Array.from with a function for independent rows [OK]
Common Mistakes:
Using fill with array directly causing shared references
Incorrect row lengths in nested arrays
Using map on uninitialized arrays
3. What will be the matrix after running the following code?
function setZeroes(matrix) {
const rows = matrix.length;
const cols = matrix[0].length;
let firstRowZero = false;
let firstColZero = false;
for (let i = 0; i < rows; i++) {
if (matrix[i][0] === 0) firstColZero = true;
}
for (let j = 0; j < cols; j++) {
if (matrix[0][j] === 0) firstRowZero = true;
}
for (let i = 1; i < rows; i++) {
for (let j = 1; j < cols; j++) {
if (matrix[i][j] === 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
for (let i = 1; i < rows; i++) {
for (let j = 1; j < cols; j++) {
if (matrix[i][0] === 0 || matrix[0][j] === 0) {
matrix[i][j] = 0;
}
}
}
if (firstColZero) {
for (let i = 0; i < rows; i++) matrix[i][0] = 0;
}
if (firstRowZero) {
for (let j = 0; j < cols; j++) matrix[0][j] = 0;
}
}
let mat = [
[1,1,1],
[1,0,1],
[1,1,1]
];
setZeroes(mat);
console.log(mat);
medium
A. [[1,0,1],[1,0,1],[1,0,1]]
B. [[0,0,0],[0,0,0],[0,0,0]]
C. [[1,1,1],[1,0,1],[1,1,1]]
D. [[1,0,1],[0,0,0],[1,0,1]]
Solution
Step 1: Identify zero positions and mark rows and columns
The zero is at position (1,1). The first row and column do not have zero initially. The code marks matrix[1][0] and matrix[0][1] as zero.
Step 2: Set zeroes based on marks and update first row/column if needed
Using marks, the code sets matrix[1][1], matrix[1][2], matrix[0][1], and matrix[2][1] to zero. Since firstRowZero and firstColZero are false, no changes to first row or column.
Final Answer:
[[1,0,1],[0,0,0],[1,0,1]] -> Option D
Quick Check:
Zero at (1,1) zeroes row 1 and column 1 [OK]
Hint: Mark first row/col to track zero rows/columns [OK]
Common Mistakes:
Not handling first row and column separately
Overwriting marks too early
Missing zeroing of entire row or column
4. The following code attempts to set matrix zeroes in place but has a bug. What is the bug?
function setZeroes(matrix) {
const rows = matrix.length;
const cols = matrix[0].length;
for (let i = 0; i < rows; i++) {
for (let j = 0; j < cols; j++) {
if (matrix[i][j] === 0) {
for (let k = 0; k < cols; k++) matrix[i][k] = 0;
for (let k = 0; k < rows; k++) matrix[k][j] = 0;
}
}
}
}
medium
A. It modifies the matrix while iterating, causing incorrect zeroing.
B. It uses extra space which is not allowed.
C. It does not check for zero elements correctly.
D. It only sets zeroes in the first row and column.
Solution
Step 1: Analyze the nested loops and zero setting
The code sets zeroes immediately when it finds a zero, modifying the matrix during iteration.
Step 2: Understand the effect of modifying during iteration
Modifying the matrix while scanning causes new zeroes to appear, leading to extra rows and columns being zeroed incorrectly.
Final Answer:
It modifies the matrix while iterating, causing incorrect zeroing. -> Option A
Quick Check:
In-place modification during iteration causes errors [OK]
Hint: Avoid changing matrix while scanning for zeroes [OK]
Common Mistakes:
Setting zeroes immediately instead of marking first
Not separating scanning and updating phases
Assuming immediate zeroing is safe
5. Given a 4x4 matrix:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5],
[1,0,1,7]
]
After applying the in-place zeroing algorithm, what is the final matrix?
hard
A. [[0,0,0,0],[0,0,5,0],[0,0,1,0],[0,0,0,0]]
B. [[0,0,0,0],[3,4,5,2],[1,3,1,5],[1,0,1,7]]
C. [[0,1,2,0],[3,4,5,2],[1,3,1,5],[1,0,1,7]]
D. [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
Solution
Step 1: Identify zero positions in the matrix
Zeroes are at positions (0,0), (0,3), and (3,1). These mark rows 0 and 3, and columns 0, 1, and 3 for zeroing.
Step 2: Set entire rows and columns to zero based on marks
Rows 0 and 3 become all zero. Columns 0, 1, and 3 become zero in all rows. The resulting matrix is [[0,0,0,0],[0,0,5,0],[0,0,1,0],[0,0,0,0]].
Final Answer:
[[0,0,0,0],[0,0,5,0],[0,0,1,0],[0,0,0,0]] -> Option A
Quick Check:
Zero rows and columns set correctly [OK]
Hint: Mark zero rows and columns, then update matrix once [OK]
Common Mistakes:
Missing zeroing some columns or rows
Overwriting matrix too early
Not handling multiple zeroes correctly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.