【力扣 · 每日一题】1582. 二进制矩阵中的特殊位置 (枚举 + Go实现)
题意
给你一个大小为 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
}
版权声明
本文仅代表作者观点,不代表博信信息网立场。