难度:简单
给定一个
m x n
的二进制矩阵mat
,返回矩阵mat
中特殊位置的数量。如果位置
(i, j)
满足mat[i][j] == 1
并且行i
与列j
中的所有其他元素都是0
(行和列的下标从 0 开始计数),那么它被称为 特殊 位置。示例 1:
输入:mat = [[1,0,0],[0,0,1],[1,0,0]] 输出:1 解释:位置 (1, 2) 是一个特殊位置,因为 mat[1][2] == 1 且第 1 行和第 2 列的其他所有元素都是 0。示例 2:
输入:mat = [[1,0,0],[0,1,0],[0,0,1]] 输出:3 解释:位置 (0, 0),(1, 1) 和 (2, 2) 都是特殊位置。提示:
m == mat.length
n == mat[i].length
1 <= m, n <= 100
mat[i][j]
是0
或1
。题解:
class Solution: def numSpecial(self, mat: List[List[int]]) -> int: m = len(mat) # 行数 n = len(mat[0]) # 列数 res = 0 for i in range(m): if sum(mat[i]) == 1: # 检查当前行是否只有一个1 for j in range(n): if mat[i][j] == 1: # 找到这个1的位置 # 检查当前列是否只有一个1 col_sum = 0 for k in range(m): col_sum += mat[k][j] if col_sum == 1: # 如果列的和也是1,说明是特殊位置 res += 1 return res