Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Set Matrix Zeroes

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "73" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0's. You must do it in place. Example 1: Input: matrix = [[1,1,1],[1,0,1],[1,1,1]] Output: [[1,0,1],[0,0,0],[1,0,1]] Example 2: 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?

Explanation

Here's the breakdown of the approach, complexity, and Python code for the in-place matrix zeroing problem:

  • High-Level Approach:

    • Use the first row and first column of the matrix as markers to indicate which rows and columns need to be zeroed out.
    • Iterate through the matrix (excluding the first row and column) and if matrix[i][j] is 0, set the corresponding matrix[i][0] and matrix[0][j] to 0.
    • Iterate through the first row and column. If matrix[i][0] or matrix[0][j] is 0, zero out the respective row or column. Handle the special cases of the first row and first column.
  • Complexity:

    • Runtime: O(m * n)
    • Storage: O(1)
  • Python Code:

Code

    def setZeroes(matrix):
    """
    :type matrix: List[List[int]]
    :rtype: None Do not return anything, modify matrix in-place instead.
    """
    m = len(matrix)
    n = len(matrix[0])

    first_row_zero = False
    first_col_zero = False

    # Check if the first row needs to be zeroed
    for j in range(n):
        if matrix[0][j] == 0:
            first_row_zero = True
            break

    # Check if the first column needs to be zeroed
    for i in range(m):
        if matrix[i][0] == 0:
            first_col_zero = True
            break

    # Use first row and first column as markers
    for i in range(1, m):
        for j in range(1, n):
            if matrix[i][j] == 0:
                matrix[i][0] = 0
                matrix[0][j] = 0

    # Zero out rows based on first column markers
    for i in range(1, m):
        if matrix[i][0] == 0:
            for j in range(1, n):
                matrix[i][j] = 0
    # Zero out cols based on first row markers
    for j in range(1, n):
        if matrix[0][j] == 0:
            for i in range(1, m):
                matrix[i][j] = 0

    # Zero out first row if necessary
    if first_row_zero:
        for j in range(n):
            matrix[0][j] = 0

    # Zero out first column if necessary
    if first_col_zero:
        for i in range(m):
            matrix[i][0] = 0

More from this blog

C

Chatmagic blog

2894 posts