難度:簡單
????????給定一個?
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