• 图解LeetCode——1582. 二进制矩阵中的特殊位置(难度:简单)


    一、题目

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

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

    二、示例

    2.1> 示例 1:

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

    2.2> 示例 2:

    【输入】mat = [
    [1,0,0],
    [0,1,0],
    [0,0,1]]
    【输出】3 【解释】(0,0), (1,1) 和 (2,2) 都是特殊位置

    2.3> 示例 3:

    【输入】mat = [
    [0,0,0,1],
    [1,0,0,0],
    [0,1,1,0],
    [0,0,0,0]]
    【输出】2

    提示:

    • rows == mat.length
    • cols == mat[i].length
    • 1 <= rows, cols <= 100
    • mat[i][j] 是 0 或 1

    三、解题思路

    根据题目描述,我们首先需要对矩阵mat进行遍历,来判断哪个位置是“1”,这里,我们创建两个变量,分别是用来记录每行存在“1”的个数——int[] row和每列存在“1”的个数——int[] column;在这两个数组中,row[index]用来表示第index行有多少个“1”column[index]用来表示第index列有多少个“1”。确定好只存在1个“1”的行号和列号之后,我们通过判断mat[i][j]是否等于“1”,如果等于,则总数加1,统计完毕后,将最终结果返回即可。

    下面我们以mat = [[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,1],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,1,1,0,0,0,0]]为例,我们对mat矩阵进行遍历,最终确定row=[0,2]column=[0,5,7],然后,我们来判断row和column组成的这6个点是否等于1。最终结果是只有mat[0][5]==1,所以,返回结果为1。具体操作,请见下图所示:

    四、代码实现

    1. class Solution {
    2.     public int numSpecial(int[][] mat) {
    3.         int[] row = new int[mat.length], column = new int[mat[0].length];
    4.         for (int i = 0; i < mat.length; i++) {
    5.             for (int j = 0; j < mat[i].length; j++) {
    6.                 if (mat[i][j] == 1){
    7.                     row[i] += 1;
    8.                     column[j] +=1;
    9.                 }
    10.             }            
    11.         }
    12.         int result = 0;
    13.         for (int i = 0; i < row.length; i++) {
    14.             if (row[i] != 1continue;
    15.             for(int j = 0; j < column.length; j++) {
    16.                 if (column[j] != 1continue;
    17.                 if (mat[i][j] == 1) result++;
    18.             }
    19.         }
    20.         return result;
    21.     } 
    22. }

    今天的文章内容就这些了:

    写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

    更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

  • 相关阅读:
    1003 - 编程求1+3+5+...+n
    【OFDM系列6】MIMO-OFDM系统模型、迫零(ZF)均衡检测和最小均方误差(MMSE)均衡检测原理和公式推导
    个微号的二次开发,api
    设计模式——工厂模式
    RF电路设计常见bug及解决方法
    C++ 学习系列 -- std::stack 与 std::queue
    在T3开发板上实现SylixOS最小系统(五)——实现T3串口驱动开发
    关于数据库分页优化--(oracle, mysql)
    【HCIE】14.IPV6基础
    C语言 指针与数组
  • 原文地址:https://blog.csdn.net/qq_26470817/article/details/126687775