39 lines
712 B
Go
39 lines
712 B
Go
// Package q1582 implements a solution for https://leetcode.com/problems/special-positions-in-a-binary-matrix/
|
|
package q1582
|
|
|
|
func numSpecial(mat [][]int) int {
|
|
hPos := make([]int, len(mat))
|
|
vPos := make([]int, len(mat[0]))
|
|
for i := range vPos {
|
|
vPos[i] = -1
|
|
}
|
|
|
|
for row := range mat {
|
|
hPos[row] = -1
|
|
for col, val := range mat[row] {
|
|
if val == 1 {
|
|
if hPos[row] >= 0 {
|
|
hPos[row] = -2
|
|
} else if hPos[row] == -1 {
|
|
hPos[row] = col
|
|
}
|
|
|
|
if vPos[col] >= 0 {
|
|
vPos[col] = -2
|
|
} else if vPos[col] == -1 {
|
|
vPos[col] = row
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
pairs := 0
|
|
for i := range hPos {
|
|
if hPos[i] >= 0 && vPos[hPos[i]] == i {
|
|
pairs++
|
|
}
|
|
}
|
|
return pairs
|
|
}
|
|
|
|
var _ = numSpecial
|