给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 。
特殊位置 定义:如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0(行和列的下标均 从 0 开始 ),则位置 (i, j) 被称为特殊位置。该元素所处的行和列上所有其他元素都是0
class Solution:
def numSpecial(self, mat: List[List[int]]) -> int:
rows_sum = [sum(row) for row in mat] #各行的总和
cols_sum = [sum(col) for col in zip(*mat)]
#拉链一样,将多个可迭代对象组合起来,然后可以用 for 循环依次取出,或者一次性将结果存入列表、元组或者字典之类的容器中
res = 0
for i, row in enumerate(mat): #同时遍历数据和数据下标
for j, x in enumerate(row):
if x == 1 and rows_sum[i] == 1 and cols_sum[j] == 1:
res += 1
return res