华为OD机试真题 Java 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路

news2024/11/23 21:28:45

在这里插入图片描述

一、题目描述

如果矩阵中的许多系数都为零,那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省,并且在许多大的实践中都会出现矩阵稀疏的问题。

给定一个矩阵,现在需要逐行和逐列地扫描矩阵,如果某一行或者某一列内,存在连续出现的0的个数超过了行宽或者列宽的一半,则认为该行或者该列是稀疏的。

二、输入描述

第一行输入两个数,分别为M和N

接下来M行输入为矩阵的成员,每行N个成员,矩阵成员都是整数,范围-32768~32767

三、输出描述

输出两行,第一行表示稀疏行的个数,第二行表示稀疏列的个数。

四、解题思路

  1. 先将数据加入到正矩阵和倒矩阵;
  2. 遍历正矩阵
    • 如果当前值不是最后一个,且当前值为0,下一个值也是0,则符合稀疏数组,稀疏行的个数+1,跳出循环;
    • 如果当前值是最后一个,且当前值为0,如果前一个值也是0,则符合稀疏数组,稀疏行的个数+1,跳出循环;
  3. 输出稀疏行的个数;
  4. 遍历倒矩阵;
    • 如果当前值不是最后一个,且当前值为0,下一个值也是0,则符合稀疏数组,稀疏列的个数+1,跳出循环;
    • 如果当前值是最后一个,且当前值为0,如果前一个值也是0,则符合稀疏数组,稀疏列的个数+1,跳出循环
  5. 输出稀疏列的个数;

五、Java算法源码

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    // 行的数量
    int M = sc.nextInt();
    // 列的数量
    int N = sc.nextInt();
    // 正矩阵(行是行,列是列)
    int[][] rowArr = new int[M][N];
    // 倒矩阵(行是列,列是行)
    int[][] colArr = new int[N][M];

	// 将数据加入到正矩阵和倒矩阵
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            int n = sc.nextInt();
            rowArr[i][j] = n;
            colArr[j][i] = n;
        }
    }

    // 稀疏行的个数
    int rowCount = 0;
    // 行数M,列数N
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            // 如果当前值不是最后一个,且当前值为0,下一个值也是0,则符合稀疏数组,稀疏行的个数+1,跳出循环
            if (j + 1 < N && rowArr[i][j] == 0 && rowArr[i][j + 1] == 0) {
                rowCount++;
                break;
            }

            // 如果当前值是最后一个,且当前值为0,如果前一个值也是0,则符合稀疏数组,稀疏行的个数+1,跳出循环
            if (j + 1 == N && rowArr[i][j] == 0 && rowArr[i][j - 1] == 0) {
                rowCount++;
                break;
            }
        }
    }

    System.out.println("存在连续0的行数:" + rowCount);

    // 稀疏列的个数
    int colCount = 0;

    // 行数M,列数N
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            // 如果当前值不是最后一个,且当前值为0,下一个值也是0,则符合稀疏数组,稀疏列的个数+1,跳出循环
            if (j + 1 < M && colArr[i][j] == 0 && colArr[i][j + 1] == 0) {
                colCount++;
                break;
            }

            // 如果当前值是最后一个,且当前值为0,如果前一个值也是0,则符合稀疏数组,稀疏列的个数+1,跳出循环
            if (j + 1 == M && colArr[i][j] == 0 && colArr[i][j - 1] == 0) {
                colCount++;
                break;
            }
        }
    }

    System.out.println("存在连续0的列数:" + colCount);
}

六、效果展示

1、输入

6 5
1 1 0 1 1
0 1 0 1 0
1 0 0 1 1
1 0 1 0 0
0 1 1 0 1
1 0 0 1 0

2、输出

3
3

3、说明

符合要求的行是:第三行1 0 0 1 1、第四行1 0 1 0 0、第六行1 0 0 1 0,共3行。

符合要求的列是:第二列1 1 0 0 1 0、第三列0 0 0 1 1 0、第四列1 1 1 0 0 1,共3列。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用阿里云免费Serverless函数计算产品资源安装 Stable Diffusion

喜欢用 Stable Diffusion 的小伙伴注意了&#xff01;上一篇介绍了使用谷歌的 Colab 免费资源来安装这个画图神器。 但因为资源是免费的&#xff0c;高峰时期有可能会被谷歌断掉服务的连接&#xff0c;像周末这种使用高峰&#xff0c;GPU 的资源得不到保证。 没关系&#xff0c…

WPF开发txt阅读器:需求分析和文件读写

文章目录 需求分析读取文本文件保存文本文件 需求分析 尽管现在比较主流的阅读格式已经是epub, modi之类的&#xff0c;但txt的使用范围要远比前两者广泛&#xff0c;所以做一个txt阅读器还是有必要的。 但是对于书籍阅读而言&#xff0c;纯文本不包含目录信息&#xff0c;这…

chatgpt赋能python:Python奇数偶数判断:从基础语法到优化运行

Python奇数偶数判断&#xff1a;从基础语法到优化运行 Python是一门简单易学的编程语言&#xff0c;并且在科学计算、数据处理和人工智能等领域都有广泛的应用。在Python中&#xff0c;判断一个数是奇数还是偶数是一个基础问题&#xff0c;本文将介绍Python中奇数偶数的判断方…

事务与项目跟踪软件Jira

本文软件应网友 不长到一百四誓不改名 要求折腾&#xff1b; 什么是 Jira &#xff1f; Jira 是由 Atlassian 开发的跟踪和管理任务的软件开发工具&#xff0c;您可以将它用于敏捷和瀑布项目管理&#xff0c;以跟踪错误、功能和其他工作项。您还可以将 JIRA 配置为与许多服务管…

Leetcode之二分查找

1. 二分查找 二分查找的前提条件是&#xff1a;有序数组。 二分查找的递归实现&#xff1a; class Solution: def search_recur(self,nums:List[int],low:int,high:int,target:int):if low > high:return -1mid low (high - low) // 2if nums[mid] target:return midel…

chatgpt赋能python:Python在线播放——让您轻松畅览优质视频

Python在线播放——让您轻松畅览优质视频 在数字时代&#xff0c;视频已经成为了一种不可或缺的媒体形式&#xff0c;人们在在日常生活和工作中也更多地借助视频来实现信息传递和沟通。Python在线播放是当下最受欢迎的视频播放方式之一&#xff0c;相比于下载、实时流媒体等方…

Coursera自动驾驶2.3-2.4——传感器:IMU,GNSS,LiDAR

文章目录 一、3D几何和参考系1.旋转变换2.参考系 二、惯性测量单元1.陀螺仪2.加速计 三、全球导航卫星系统&#xff08;GNSS&#xff09;四、激光雷达1.激光雷达和测量模型&#xff08;1&#xff09;激光雷达概述&#xff08;2&#xff09;测量模型 2.点云3.平面拟合4.点云匹配…

Docker 基本管理

一、Docker 概述 Docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵守了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的“虚拟机”。 Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自…

rimraf : 无法加载文件 C:\Program Files\nodejs\rimraf.ps1,因为在此系统上禁止运行脚本。

问题&#xff1a; rimraf 运行 rimraf node_modules 命令报错&#xff1a;&#xff08;rimraf 前端同学可以多多了解&#xff09;rimraf : 无法加载文件 C:\Program Files\nodejs\rimraf.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/…

C#,码海拾贝(34)——求“赫申伯格矩阵”全部“特征值”的“QR方法”之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 矩阵类 /// 作者&#xff1a;周长发 /// 改进&#xff1a;深度混淆 /// https://blog.csdn.net/beijinghorn /// </summary> public partial class Matrix {…

chatgpt赋能python:Python基本词汇介绍

Python基本词汇介绍 Python是一种高级编程语言&#xff0c;它有着广泛的应用&#xff0c;从软件开发到数据科学。Python的语法简单易懂&#xff0c;它被广泛认为是一种易于学习和使用的编程语言。在本文中&#xff0c;我们将介绍一些Python基本词汇&#xff0c;让您能够更好地…

chatgpt赋能python:用Python统计奇偶数的方法

用Python统计奇偶数的方法 Python作为一种广泛应用于数据分析和科学计算的编程语言&#xff0c;具有许多内置函数和库&#xff0c;可以轻松地进行奇偶数的统计。这篇文章将向您展示如何使用Python统计奇偶数&#xff0c;并提供几个常见的示例。 Python奇偶数的定义 奇数是除…

ConcurrentHashMap核心源码(JDK1.8)

一、ConcurrentHashMap的前置知识扫盲 ConcurrentHashMap的存储结构&#xff1f; 数组 链表 红黑树 二、ConcurrentHashMap的DCL操作 HashMap线程不安全&#xff0c;在并发情况下&#xff0c;或者多个线程同时操作时&#xff0c;肯定要使用ConcurrentHashMap 无论是HashM…

Ceph分布式存储 原理+架构图详解

存储基础 单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xff08;网络附加存储&#x…

2、MySQL数据库基础

目录 MySQL 连接查询 表 约束 存储引擎 事务 索引 视图&#xff08;View&#xff09; 数据库的导入导出&#xff08;DBA命令&#xff09; 数据库设计三范式 MySQL sql、DB、DBMS分别是什么&#xff1f;它们之间的关系&#xff1f; DB&#xff1a; DataBase&#xff0…

软考A计划-电子商务设计师-系统开发项目管理

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

华为OD机试真题 Java 实现【最小传输时延】【2023 B卷 100分】,附详细解题思路

一、题目描述 某通信网络中有N个网络节点&#xff0c;用1到N进行标识。 网络通过一个有向无环图表示&#xff0c;其中图的边的值表示结点之间的消息传递时延。 现给定相连节点之间的时延列表times[i] {u,v,w}&#xff0c;u表示源节点&#xff0c;v表示目的节点&#xff0c;…

每日一博 - Server-Sent Events推送技术

文章目录 概述SSE VS WS一、实现方式二、应用场景三、性能方面四、小结结 Code在Spring Boot中使用SSE测试总结 概述 SSE&#xff08;Server-Sent Events&#xff09;是一种基于HTTP的服务器推送技术&#xff0c;它允许服务器实时地向客户端推送数据。相比于传统的轮询或长轮询…

计算机网络|第六章:链路层和局域网

目录 &#x1f4da;链路层概述 &#x1f407;链路层提供的服务 &#x1f407;链路层在何处实现 &#x1f4da;差错检测和纠正技术 &#x1f407;奇偶校验 &#x1f407;检验和方法 &#x1f407;循环冗余检测⭐️ &#x1f4da;多路访问链路和协议 &#x1f407;信道划…

前端:开源免费的浏览器端Markdown编辑器——Vditor上手体验

今天给大家聊聊一款开源免费的浏览器端Markdown编辑器——Vditor&#xff0c;非常的好用&#xff0c;分享给大家&#xff01; 一、编辑器简介 Vditor 是一款浏览器端的 Markdown 编辑器&#xff0c;支持所见即所得、即时渲染&#xff08;类似 Typora&#xff09;和分屏预览模式…