📜  行主要和列主要顺序中具有相同地址的职位数(1)

📅  最后修改于: 2023-12-03 15:11:54.532000             🧑  作者: Mango

行主要和列主要顺序中具有相同地址的职位数

对于一个n * n的矩阵,行主要和列主要顺序中具有相同地址的位置是指其行主要元素与列主要元素是同一位置的元素。行主要元素是指该行中最大的元素,列主要元素是指该列中最小的元素。编写一个函数来计算矩阵中行主要和列主要顺序中具有相同地址的职位数。

示例:

假设有矩阵:

[
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

其中元素1、5、9是行主要元素,元素7、5、3是列主要元素,元素5既是行主要元素又是列主要元素,因此返回1。

解题思路:

首先使用两个数组分别存储矩阵每个行中的最大值和每个列中的最小值。

然后遍历矩阵,对于每个元素,如果它既是行主要元素又是列主要元素,则将结果加1。

最后返回结果即可。

代码如下:

class Solution:
    def findLonelyPixel(self, picture: List[List[str]]) -> int:
        m, n = len(picture), len(picture[0])
        row, col = [0] * m, [0] * n
        res = 0
        for i in range(m):
            for j in range(n):
                if picture[i][j] == "B":
                    row[i] += 1
                    col[j] += 1
        for i in range(m):
            for j in range(n):
                if picture[i][j] == "B":
                    if row[i] == 1 and col[j] == 1:
                        res += 1
        return res

时间复杂度:$O(mn)$

空间复杂度:$O(m+n)$