Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Reconstruct a 2-Row Binary Matrix

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "1253" 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 the following details of a matrix with n columns and 2 rows : The matrix is a binary matrix, which means each element in the matrix can be 0 or 1. The sum of elements of the 0-th(upper) row is given as upper. The sum of elements of the 1-st(lower) row is given as lower. The sum of elements in the i-th column(0-indexed) is colsum[i], where colsum is given as an integer array with length n. Your task is to reconstruct the matrix with upper, lower and colsum. Return it as a 2-D integer array. If there are more than one valid solution, any of them will be accepted. If no valid solution exists, return an empty 2-D array. Example 1: Input: upper = 2, lower = 1, colsum = [1,1,1] Output: [[1,1,0],[0,0,1]] Explanation: [[1,0,1],[0,1,0]], and [[0,1,1],[1,0,0]] are also correct answers. Example 2: Input: upper = 2, lower = 3, colsum = [2,2,1,1] Output: [] Example 3: Input: upper = 5, lower = 5, colsum = [2,1,2,0,1,0,1,2,0,1] Output: [[1,1,1,0,1,0,0,1,0,0],[1,0,1,0,0,0,1,1,0,1]] Constraints: 1 <= colsum.length <= 10^5 0 <= upper, lower <= colsum.length 0 <= colsum[i] <= 2

Explanation

Here's a breakdown of the solution:

  • Prioritize '2's: Iterate through colsum. If a column sum is 2, fill both rows with 1. Adjust upper and lower accordingly. If either becomes negative, no solution exists.
  • Handle '1's: If a column sum is 1, prioritize filling the upper row if upper is greater than 0, otherwise fill the lower row. Again, update upper and lower and check for negative values.
  • Final Check: After the iteration, verify that upper and lower are both 0. If not, no valid solution exists.

  • Runtime Complexity: O(n), where n is the length of colsum. Storage Complexity: O(1), excluding the output matrix.

Code

    def reconstructMatrix(upper: int, lower: int, colsum: list[int]) -> list[list[int]]:
    n = len(colsum)
    matrix = [[0] * n for _ in range(2)]

    for i in range(n):
        if colsum[i] == 2:
            matrix[0][i] = 1
            matrix[1][i] = 1
            upper -= 1
            lower -= 1
        elif colsum[i] == 1:
            if upper > lower:
                matrix[0][i] = 1
                upper -= 1
            else:
                matrix[1][i] = 1
                lower -= 1

        if upper < 0 or lower < 0:
            return []

    if upper != 0 or lower != 0:
        return []

    return matrix

More from this blog

C

Chatmagic blog

2894 posts