1582. 二进制矩阵中的特殊位置 - 力扣(LeetCode)



这个问题可以通过遍历矩阵并检查每个为 1 的元素所在行和列是否其他元素都为 0 来解决。下面是实现该算法的 Python 代码:
def numSpecial(mat):
m, n = len(mat), len(mat[0])
# 先统计每一行和每一列中 1 的个数
row_sum = [sum(row) for row in mat]
col_sum = [sum(mat[i][j] for i in range(m)) for j in range(n)]
count = 0
# 遍历矩阵,找符合条件的位置
for i in range(m):
for j in range(n):
if mat[i][j] == 1 and row_sum[i] == 1 and col_sum[j] == 1:
count += 1
return count
示例
mat = [
[1, 0, 0],
[0, 0, 1],
[1, 0, 0]
]
print(numSpecial(mat)) # 输出 1
解释
上述矩阵中,只有位置 (1, 2) 是特殊位置,因为它是 1 且其所在的行和列其他元素都是 0。
如果你想我用其他语言写这段代码或者做复杂度分析,随时说哈。

被折叠的 条评论
为什么被折叠?



