当前位置: 首页 > news >正文

力扣 1582. 二进制矩阵中的特殊位置

题目

给你一个大小为 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

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

输入:mat = [[0,0,0,1],
[1,0,0,0],
[0,1,1,0],
[0,0,0,0]]
输出:2

输入:mat = [[0,0,0,0,0],
[1,0,0,0,0],
[0,1,0,0,0],
[0,0,1,0,0],
[0,0,0,1,1]]
输出:3

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/special-positions-in-a-binary-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1:模拟

Java实现
class Solution {
    public int numSpecial(int[][] mat) {
        int row = mat.length, col = mat[0].length;
        int res = 0;
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if (mat[i][j] == 1 && pd(mat, i, j)) res++;
            }
        }
        return res;
    }

    public boolean pd(int[][] mat, int i, int j) {
        int row = mat.length, col = mat[0].length;
        //上
        for (int ii = i - 1; ii >= 0; ii--) {
            if (mat[ii][j] == 1) return false;
        }

        //下
        for (int ii = i + 1; ii < row; ii++) {
            if (mat[ii][j] == 1) return false;
        }

        //左
        for (int jj = j - 1; jj >= 0; jj--) {
            if (mat[i][jj] == 1) return false;
        }

        //右
        for (int jj = j + 1; jj < col; jj++) {
            if (mat[i][jj] == 1) return false;
        }
        return true;
    }
}

在这里插入图片描述

相关文章:

  • mybatis原理及整合spring原理
  • 数据结构——树形结构
  • R语言ggplot2可视化相关系数图(correlation analysis):通过数据点的大小以及颜色(双色渐变填充)表征相关性的强度
  • 【Java第25期】:File 类的用法和 InputStream, OutputStream 的用法
  • 阿里一面: Spring 有哪些扩展点?
  • 【dotnet】Unity 两种打包方式解析(IL2CPP Mono)
  • 空间数据结构管理---RTree(上篇)
  • leetcode每天5题-Day37
  • Elasticsearch入门开发
  • ETL性能优化
  • 猿创征文|【第11题】求坐上公交的最晚时间(考察贪心算法)
  • 直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(一)
  • Pandas loc与iloc
  • 基于QT的指挥猫猫打架玩耍的小游戏设计
  • K8s的Service详解
  • 【翻译】babel对TC39装饰器草案的实现
  • Bootstrap JS插件Alert源码分析
  • codis proxy处理流程
  • ES2017异步函数现已正式可用
  • ES6 学习笔记(一)let,const和解构赋值
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • leetcode-27. Remove Element
  • 爱情 北京女病人
  • 初识MongoDB分片
  • 动态魔术使用DBMS_SQL
  • 聚类分析——Kmeans
  • 小程序测试方案初探
  • 译自由幺半群
  • ###C语言程序设计-----C语言学习(3)#
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (day 12)JavaScript学习笔记(数组3)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)linux 命令大全
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • ::前边啥也没有
  • @ConditionalOnProperty注解使用说明
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [100天算法】-实现 strStr()(day 52)
  • [16/N]论得趣
  • [4.9福建四校联考]
  • [AIGC] MySQL存储引擎详解
  • [ajaxupload] - 上传文件同时附件参数值
  • [APIO2012] 派遣 dispatching
  • [BetterExplained]书写是为了更好的思考(转载)
  • [c#基础]值类型和引用类型的Equals,==的区别