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

【华为OD题库-017】矩阵稀疏扫描-Java

题目

如果矩阵中的许多系数都为零,那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省,并且在许多大的实践中都会出现矩阵稀疏的问题。给定一个矩阵, 现在需要逐行和逐列地扫描矩阵,如果某一行或者某一列内,存在连续出现的0的个数超过了行宽或者列宽的
一半W/2整除),则认为该行或者该列是稀疏的。
扫描给定的矩阵,输出稀疏的行数和列数
输入描述
第一行输入为M和N,表示矩阵的大小M * N,0<M <=100,0< N <=100
接下来M行输入为矩阵的成员,每行N个成员,矩阵成员都是有符号整数,范围-32768到32767
输出描述
输出两行,第一行表示稀疏行的个数,第二行表示稀疏列的个数
示例1:
输入
3 3
1 0 0
0 1 0
0 0 1
输出
3
3
说明
给定的3 * 3矩阵里,每一行和每一列内都存在2个0, 行宽3,列宽3,[3/2]= 1,因此稀疏行有3个,稀疏列有3个。
示例2:
输入
5 3
-1 0 1
0 0 0
-1 0 0
0 -1 0
0 0 0
输出
5
3
说明
给定的 5 * 3矩阵,每行里面0的个数大于等于1表示稀疏行,每列里面0的个数大于等于2表示稀疏列,所以有5个稀疏行,3个稀疏列

思路

简单题,直接遍历矩阵,统计其每行、每列为0的个数即可。
最后判断是否大于行宽/列宽的一般,得出稀疏行、列的个数

题解

package hwod;import java.util.Scanner;public class MatrixScan {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] firstLines = sc.nextLine().split(" ");int m = Integer.parseInt(firstLines[0]);int n = Integer.parseInt(firstLines[1]);int[][] matrix = new int[m][n];for (int i = 0; i < m; i++) {String[] rows = sc.nextLine().split(" ");for (int j = 0; j < n; j++) {matrix[i][j] = Integer.parseInt(rows[j]);}}int[] res = getRAndC(matrix);System.out.println(res[0]);System.out.println(res[1]);}private static int[] getRAndC(int[][] matrix) {int m = matrix.length, n = matrix[0].length;int[] rows = new int[m];int[] cols = new int[n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (matrix[i][j] == 0) {rows[i]++;cols[j]++;}}}int rowRes = 0, colRes = 0;int rowThreshold = n / 2, colThreshold = m / 2;for (int r : rows) {if(r>=rowThreshold) rowRes++;}for (int c : cols) {if(c>=colThreshold) colRes++;}return new int[]{rowRes, colRes};}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

http://www.lryc.cn/news/231814.html

相关文章:

  • 相机通用类之LMI激光三角相机(3D),软触发硬触发(飞拍),并输出halcon格式对象
  • android studio基本使用
  • 安装包管理工具-Yarn
  • SOLIDWORKS功能布局实用技巧之保存实体技术
  • Android11 将logcat日志定位到uart串口输出
  • SpringSecurity6从入门到上天系列第六篇:解决这个问题为什么在引入SpringSecurity之后所有的请求都需要先做登录认证才可以进行访问呢
  • Mac M3 芯片安装 Nginx
  • 浏览器怎么更新?4个高效设置方法!
  • settings.json配置
  • Mysql中的JDBC编程
  • 媒体行业的3D建模:在影视中创造特效纹理
  • Kafka从安装使用到集成Springboot详细教程
  • 【giszz笔记】产品设计标准流程【4】
  • 图论16-拓扑排序
  • SecureCRT 9.4.2最新终端SSH工具
  • 基于python+django的美食餐厅点餐订餐网站
  • Moka人事:实现无代码开发的API连接,打通电商平台与用户运营系统
  • 【Spring】超详细讲解AOP(面向切面编程)
  • 界面组件DevExpress Reporting v23.1亮点 - 全新升级报表查看器
  • 电容容量换算电池容量,以及RTC持续时间计算
  • 【BIM入门实战】高程点无法放置的解决方法
  • CRM系统对科技企业有哪些帮助
  • 用excel计算一个矩阵的转置矩阵
  • WPF 中的 ControlTemplate 和 DataTemplate 有什么区别
  • 3D重建相关
  • 字符串数组排序(Java/JavaScript代码版)
  • 调用电商集成平台 聚水潭 api接口示例
  • 深入Rust:探索所有权和借用机制
  • Python之冒泡排序(AI自动写文章项目测试)
  • spring cloud微服务中多线程下,子线程通过feign调用其它服务,请求头token等丢失