本文最后更新于:2023年3月19日 晚上
Lt1582. 二进制矩阵中的特殊位置
给你一个大小为 rows x cols
的矩阵 mat
,其中 mat[i][j]
是 0
或 1
,请返回 矩阵 mat
中特殊位置的数目 。
特殊位置 定义:如果 mat[i][j] == 1
并且第 i
行和第 j
列中的所有其他元素均为 0
(行和列的下标均 从 0 开始 ),则位置 (i, j)
被称为特殊位置。
示例 1:
1 2 3 4 5
| 输入:mat =
输出:1 解释:(1,2) 是一个特殊位置,因为 mat == 1 且所处的行和列上所有其他元素都是 0
|
示例 2:
1 2 3 4 5
| 输入:mat = [[1,0,0], [0,1,0], [0,0,1]] 输出:3 解释:(0,0), (1,1) 和 (2,2) 都是特殊位置
|
示例 3:
示例 4:
提示:
rows == mat.length
cols == mat[i].length
1 <= rows, cols <= 100
mat[i][j]
是 0
或 1
思路
第一次遍历统计每行每列 1 的个数,第二次遍历,判断当前行列 1 个数相加是否为 2 进行计数,大于 2 说明还有其他行或列有 1
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
var numSpecial = function (mat) { const arrRow = new Array(mat.length).fill(0), arrCol = new Array(mat[0].length).fill(0); let res = 0; for (let i = 0; i < mat.length; i++) { for (let j = 0; j < mat[0].length; j++) { const item = mat[i][j]; if (item === 1) { arrRow[i] += item; arrCol[j] += item; } } } for (let i = 0; i < mat.length; i++) { for (let j = 0; j < mat[0].length; j++) { const item = mat[i][j]; if (item === 1 && arrRow[i] + arrCol[j] === 2) res++; } } return res; };
|