题目名称

给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 。

特殊位置 定义:如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0(行和列的下标均 从 0 开始 ),则位置 (i, j) 被称为特殊位置。

示例

输入:mat = [[1,0,0],
[0,0,1],
[1,0,0]]
输出:1
解释:(1,2) 是一个特殊位置,因为 mat[1][2] == 1 且所处的行和列上所有其他元素都是 0

题解

只需要判断二维数组每行每列只有一个 1

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* @param {number[][]} mat
* @return {number}
*/
var numSpecial = function(mat) {
let special = 0
for(let i = 0; i < mat.length; i++) {
let row = mat[i]
let index = row.indexOf(1)
if(index > -1) {
if(row.lastIndexOf(1) === index && mat.every((item, j) => j === i || item[index] === 0)) {
special++
}
}
}
return special
};