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


	# 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](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
	> 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
	```python
	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
	```
			
