题意
给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 。
特殊位置 定义:如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0(行和列的下标均 从 0 开始 ),则位置 (i, j) 被称为特殊位置。
思路
维护每一行的和跟每一列的和
枚举每一个元素,如果当前元素的值为1并且所在行的和跟所在列的和都为1,那么就表示所在行跟所在列只有本身一个元素为1,符合题意。
代码
func numSpecial(mat [][]int) int { n,m := len(mat),len(mat[0]) ans := 0 x := make([]int,n) y := make([]int,m) for i := 0 ; i < n ; i = i+1 { for j := 0 ; j < m ; j = j+1 { if mat[i][j] == 1 { x[i] = x[i] + 1 y[j] = y[j] + 1 } } } for i := 0 ; i < n ; i = i+1 { for j := 0 ; j < m ; j = j+1 { if mat[i][j] == 1 && x[i] == 1 && y[j] == 1{ ans = ans +1 } } } return ans }