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

Java解决二进制矩阵中特殊位置问题

Java解决二进制矩阵中特殊位置问题

01 题目

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

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

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

输入: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

提示:

  • rows == mat.length
  • cols == mat[i].length
  • 1 <= rows, cols <= 100
  • mat[i][j]01

02 知识点

  • 二维数组

03 我的题解

public class shuzu05 {public static void main(String[] args) {//测试数据int[][] mat=new int[][] {{1,0,0},{0,1,0},{0,0,1}};System.out.println(numSpecial(mat));}
public static int numSpecial(int[][] mat) {int count=0;int m=mat.length;//记录排的数量int n=mat[0].length;//记录列的数量for (int i = 0; i < m; i++) {boolean flag=false;//用于标记是否满足第一条件for (int j = 0; j <n; j++) {if (mat[i][j]==1) {flag=true;//当满足第一条件执行,第二条件}if (flag) {//目的是判断同一行是否有满足第一条件的数for (int k1 = 0; k1 < m; k1++) {if (mat[k1][j]==1&&k1!=i) {flag=false;break;}}//目的是判断同一列是否有满足第一条件的数for (int k2 = 0; k2 < n; k2++) {if (mat[i][k2]==1&&k2!=j) {flag=false;break;//flag要修改,还要退出循环}}//如果前两个条件都不满足,则说明同一行和同一列都没有mat[i][j]=1,flag的值依旧是true,则count+1               }if (flag) {count++;}}}return count;
}
}

相关文章:

  • 101基于matlab的极限学习机ELM算法进行遥感图像分类
  • YOLO_embedded: YOLO算法快速嵌入式部署
  • QT 重定向qdebug输出到自绘界面
  • Docker资源控制
  • Theamleaf导出pdf模版编写(原始th/td编写表格)
  • vue3 引入Element Plus 组件库
  • WPS Office JS宏实现批量处理Word中的标题和正文的样式
  • Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能
  • Kotlin Flow 操作符
  • 微前端个人理解与简单总结
  • Android应用:SharedPreferences、MMKV和DataStore怎么选
  • AWS 日志分析工具
  • FFmpeg的AVInputFormat
  • 使用发布订阅模式处理多维度复杂融合场景
  • Linux(centos, ubuntu) 快速安装anaconda;5秒安装anaconda
  • codis proxy处理流程
  • Debian下无root权限使用Python访问Oracle
  • Elasticsearch 参考指南(升级前重新索引)
  • HTML-表单
  • Java方法详解
  • js继承的实现方法
  • js如何打印object对象
  • laravel 用artisan创建自己的模板
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • v-if和v-for连用出现的问题
  • win10下安装mysql5.7
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 第十八天-企业应用架构模式-基本模式
  • 技术胖1-4季视频复习— (看视频笔记)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 中文输入法与React文本输入框的问题与解决方案
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 回归生活:清理微信公众号
  • ​【已解决】npm install​卡主不动的情况
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​虚拟化系列介绍(十)
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)学习JVM —— 垃圾回收机制
  • (二)丶RabbitMQ的六大核心
  • (附源码)计算机毕业设计高校学生选课系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (一)基于IDEA的JAVA基础12
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core中Emit的使用
  • .Net 应用中使用dot trace进行性能诊断
  • .Net 中Partitioner static与dynamic的性能对比
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET导入Excel数据
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)