1582. Special Positions in a Binary Matrix

1582. Special Positions in a Binary Matrix #

题目 #

  • 给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j]01,请返回 矩阵 mat 中特殊位置的数目
  • 特殊位置 定义:如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0(行和列的下标均 从 0 开始 ),则位置 (i, j) 被称为特殊位置。

思路 #

模拟 #

代码 #

模拟 #

class Solution {
    public int numSpecial(int[][] mat) {
        Map<Integer, Integer> cntRows = new HashMap<>();
        Map<Integer, Integer> cntCols = new HashMap<>();
        for (int i = 0; i < mat.length; i++) {
            int sum = 0;
            for (int num: mat[i]) sum += num;
            if (sum > 0) cntRows.put(i, sum);
        }
        for (int j = 0; j < mat[0].length; j++) {
            int sum = 0;
            for (int i = 0; i < mat.length; i++) sum += mat[i][j];
            if (sum > 0) cntCols.put(j, sum);
        }
        int ans = 0;
        for (int i = 0; i < mat.length; i++) {
            for (int j = 0; j < mat[0].length; j++) {
                if (mat[i][j] == 1 && cntRows.get(i) == 1 && cntCols.get(j) == 1) ans++;
            }
        }
        return ans;
    }
}

致谢 #

宫水三叶