Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Set Matrix Zeroes In Place in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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
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
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
What is the space complexity of the in-place solution?
AO(1)
BO(m + n)
CO(m * n)
DO(log(m * n))
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))
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

      1. 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.
      2. 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.
      3. 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
      4. 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));
      C. const matrix = Array.from({ length: 3 }, () => Array(3).fill(0));
      D. const matrix = new Array(3).map(new Array(3).fill(0));

      Solution

      1. 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.
      2. 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.
      3. Final Answer:

        const matrix = Array.from({ length: 3 }, () => Array(3).fill(0)); -> Option C
      4. Quick Check:

        Independent rows = const matrix = Array.from({ length: 3 }, () => Array(3).fill(0)); [OK]
      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

      1. 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.
      2. 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.
      3. Final Answer:

        [[1,0,1],[0,0,0],[1,0,1]] -> Option D
      4. 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

      1. Step 1: Analyze the nested loops and zero setting

        The code sets zeroes immediately when it finds a zero, modifying the matrix during iteration.
      2. 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.
      3. Final Answer:

        It modifies the matrix while iterating, causing incorrect zeroing. -> Option A
      4. 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

      1. 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.
      2. 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]].
      3. Final Answer:

        [[0,0,0,0],[0,0,5,0],[0,0,1,0],[0,0,0,0]] -> Option A
      4. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard