Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: First Completely Painted Row or Column

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "2661" 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 a 0-indexed integer array arr, and an m x n integer matrix mat. arr and mat both contain all the integers in the range [1, m n]. Go through each index i in arr starting from index 0 and paint the cell in mat containing the integer arr[i]. Return the smallest index i at which either a row or a column will be completely painted in mat. Example 1: Input: arr = [1,3,4,2], mat = [[1,4],[2,3]] Output: 2 Explanation: The moves are shown in order, and both the first row and second column of the matrix become fully painted at arr[2]. Example 2: Input: arr = [2,8,7,4,1,3,5,6,9], mat = [[3,2,5],[1,4,6],[8,7,9]] Output: 3 Explanation: The second column becomes fully painted at arr[3]. Constraints: m == mat.length n = mat[i].length arr.length == m n 1 <= m, n <= 105 1 <= m n <= 105 1 <= arr[i], mat[r][c] <= m n All the integers of arr are unique. All the integers of mat are unique.

Explanation

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

  • Store Positions: Create a dictionary (or array) that maps each number in the range [1, m*n] to its row and column index in mat. This allows for O(1) lookup of element positions.

  • Track Row and Column Counts: Maintain arrays to track how many cells are painted in each row and column.

  • Iterate and Check: Iterate through arr. For each element, find its position in mat using the lookup. Increment the row and column counts. If any row or column count equals its respective dimension, return the current index in arr.

  • Runtime & Storage Complexity: O(m*n) Time, O(m*n) Space

Code

    def firstCompleteIndex(arr, mat):
    m = len(mat)
    n = len(mat[0])

    # Store the row and column index of each number in mat
    pos = {}
    for r in range(m):
        for c in range(n):
            pos[mat[r][c]] = (r, c)

    row_count = [0] * m
    col_count = [0] * n

    for i, val in enumerate(arr):
        r, c = pos[val]
        row_count[r] += 1
        col_count[c] += 1

        if row_count[r] == n or col_count[c] == m:
            return i

    return -1  # Should never reach here given problem constraints

More from this blog

C

Chatmagic blog

2894 posts