Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Find Valid Matrix Given Row and Column Sums

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "1605" 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

You are given two arrays rowSum and colSum of non-negative integers where rowSum[i] is the sum of the elements in the ith row and colSum[j] is the sum of the elements of the jth column of a 2D matrix. In other words, you do not know the elements of the matrix, but you do know the sums of each row and column. Find any matrix of non-negative integers of size rowSum.length x colSum.length that satisfies the rowSum and colSum requirements. Return a 2D array representing any matrix that fulfills the requirements. It's guaranteed that at least one matrix that fulfills the requirements exists. Example 1: Input: rowSum = [3,8], colSum = [4,7] Output: [[3,0], [1,7]] Explanation: 0th row: 3 + 0 = 3 == rowSum[0] 1st row: 1 + 7 = 8 == rowSum[1] 0th column: 3 + 1 = 4 == colSum[0] 1st column: 0 + 7 = 7 == colSum[1] The row and column sums match, and all matrix elements are non-negative. Another possible matrix is: [[1,2], [3,5]] Example 2: Input: rowSum = [5,7,10], colSum = [8,6,8] Output: [[0,5,0], [6,1,0], [2,0,8]] Constraints: 1 <= rowSum.length, colSum.length <= 500 0 <= rowSum[i], colSum[i] <= 108 sum(rowSum) == sum(colSum)

Explanation

Here's a breakdown of the approach, followed by the Python code:

  • Greedy Allocation: The core idea is to greedily allocate values to each cell of the matrix. For each cell (i, j), we assign the minimum of the remaining row sum for row 'i' and the remaining column sum for column 'j'.
  • Update Sums: After assigning a value to a cell, we update the corresponding row and column sums by subtracting the assigned value.
  • Iteration: We iterate through the matrix row by row, column by column, until all row and column sums are exhausted.

  • Runtime & Storage Complexity: O(mn) runtime, where 'm' is the number of rows and 'n' is the number of columns. O(mn) storage for the resulting matrix.

Code

    def restoreMatrix(rowSum, colSum):
    """
    Restores a matrix given row and column sums.

    Args:
        rowSum (list[int]): The sum of each row.
        colSum (list[int]): The sum of each column.

    Returns:
        list[list[int]]: A matrix satisfying the row and column sums.
    """

    m = len(rowSum)
    n = len(colSum)
    matrix = [[0] * n for _ in range(m)]

    for i in range(m):
        for j in range(n):
            matrix[i][j] = min(rowSum[i], colSum[j])
            rowSum[i] -= matrix[i][j]
            colSum[j] -= matrix[i][j]

    return matrix

More from this blog

C

Chatmagic blog

2894 posts