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


	# 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](https://www.chatmagic.app), 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
	```python
	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
	```
			
