返回题库

最先完整涂色的行或列

First Completely Painted Row or Column

专题
Algorithmic Programming / 算法编程
难度
L3
来源
Citadel

题目详情

问题:最先完整涂色的行或列

考察:数组

来源:Citadel

链接:https://www.jointaro.com/interviews/questions/first-completely-painted-row-or-column/

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:

image explanation for 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:

image explanation for 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.
解析

思路:先记录矩阵中每个数字对应的行列。按 arr 顺序涂色时维护每行和每列已涂数量,某行达到列数或某列达到行数时返回当前下标。

复杂度:时间 O(mn + k),空间 O(mn + m + n)。