What does the "Set Matrix Zeroes In Place" problem ask you to do?
You need to modify a given matrix so that if an element is 0, its entire row and column become 0, without using extra space for another matrix.
Click to reveal answer
intermediate
Why do we use the first row and first column of the matrix as markers in the in-place solution?
Because we want to avoid extra space, we use the first row and column to remember which rows and columns should be zeroed later.
Click to reveal answer
intermediate
In the in-place approach, how do you handle the first row and first column separately?
You use two boolean flags to track if the first row or first column originally had any zero, so you can zero them at the end if needed.
Click to reveal answer
beginner
What is the time complexity of the in-place solution for Set Matrix Zeroes?
The time complexity is O(m * n), where m is the number of rows and n is the number of columns, because you scan the matrix multiple times but each scan is linear.
Click to reveal answer
beginner
What is the space complexity of the in-place solution for Set Matrix Zeroes?
The space complexity is O(1) because no extra matrix or arrays are used; only a few variables for flags are needed.
Click to reveal answer
What is the main goal of the "Set Matrix Zeroes In Place" problem?
ASort the matrix rows in ascending order
BTranspose the matrix
CFind the maximum element in the matrix
DSet entire rows and columns to zero if any element is zero, without extra space
✗ Incorrect
The problem requires setting rows and columns to zero if any element is zero, and doing it in-place without extra space.
Which part of the matrix is used as markers to remember zero rows and columns in the in-place solution?
ALast row and last column
BFirst row and first column
CDiagonal elements
DMiddle row and column
✗ Incorrect
The first row and first column are used as markers to avoid extra space usage.
How do you know if the first row needs to be zeroed in the in-place solution?
ACount the number of zeros in the matrix
BCheck the last element of the first row
CUse a boolean flag set during the first scan
DIt is always zeroed
✗ Incorrect
A boolean flag tracks if the first row originally had any zero.
What is the space complexity of the in-place solution?
AO(1)
BO(m + n)
CO(m * n)
DO(log(m * n))
✗ Incorrect
The in-place solution uses constant extra space, only a few variables.
What is the time complexity of the in-place solution?
AO(m * n)
BO(m + n)
CO(m^2 * n^2)
DO(log(m * n))
✗ Incorrect
The matrix is scanned multiple times but each scan is linear in size, so total time is O(m * n).
Explain how to use the first row and first column as markers to set matrix zeroes in place.
Think about how to remember which rows and columns to zero without extra space.
You got /5 concepts.
Describe the steps and complexity of the in-place solution for the Set Matrix Zeroes problem.
Focus on the order of operations and how space is saved.
You got /7 concepts.
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.