华为OD机试真题 Java 实现【通信误码】【2022Q4 100分】,附详细解题思路

news2024/9/24 5:15:43

在这里插入图片描述

一、题目描述

信号传播过程中会出现一些误码,不同的数字表示不同的误码ID,取值范围为1~65535,用一个数组记录误码出现的情况。

每个误码出现的次数代表误码频度,请找出记录中包含频度最高误码的最小子数组长度。

二、输入描述

误码总数目:

取值范围为0 - 255,取值为0表示没有误码的情况。

误码出现频率数组:

误码ID范围为1 - 65535,数组长度为1~1000。

三、输出描述

包含频率最高的误码最小子数组长度。

四、解题思路

  1. 读取输入的误码总数目 n;
  2. 初始化一个 HashMap errorMap,用于记录误码出现的次数;
  3. 初始化一个 ArrayList sourceList,用于记录误码出现的顺序;
  4. 初始化变量 max 为 0,用于记录误码的最大频度;
  5. 循环 n 次,读取误码,并进行以下操作:
    • 将误码添加到 sourceList 中;
    • 如果 errorMap 中已经存在该误码,则将对应的次数加 1;否则,将该误码添加到 errorMap 中,并将次数设置为 1;
    • 更新 max 的值为当前误码出现次数和 max 中的较大值;
  6. 创建一个 ArrayList list,用于记录出现频率最高的误码;
  7. 遍历 errorMap 中的每个键值对,如果次数等于 max,将误码添加到 list 中;
  8. 初始化变量 ret 为整型最大值 Integer.MAX_VALUE,用于记录最小子数组长度;
  9. 遍历 list 中的每个误码,并进行以下操作:
    • 找到该误码在 sourceList 中第一次出现的位置 start 和最后一次出现的位置 end;
    • 计算子数组长度为 end - start + 1;
    • 更新 ret 的值为当前子数组长度和 ret 中的较小值;
  10. 输出最小子数组长度 ret;

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // 误码数组长度
    int n = sc.nextInt();
    Map<Integer, Integer> errorMap = new HashMap<Integer, Integer>();

    // 误码数组
    List<Integer> sourceList = new ArrayList<Integer>();
    // 误码次数最大值
    int max = 0;
    for (int i = 0; i < n; i++) {
        int errorCode = sc.nextInt();
        sourceList.add(errorCode);
        if (errorMap.containsKey(errorCode)) {
            errorMap.put(errorCode, errorMap.get(errorCode) + 1);
        } else {
            errorMap.put(errorCode, 1);
        }
        max = Math.max(max, errorMap.get(errorCode));
    }

    // 出现次数最多的错误号记录
    List<Integer> list = new ArrayList<Integer>();
    for (Map.Entry<Integer, Integer> entry : errorMap.entrySet()) {
        if (entry.getValue() == max) {
            list.add(entry.getKey());
        }
    }

    int ret = Integer.MAX_VALUE;
    for (Integer integer : list) {
        int start = sourceList.indexOf(integer);
        int end = sourceList.lastIndexOf(integer);
        ret = Math.min(ret, end - start + 1);
    }
    System.out.println(ret);
}

六、效果展示

1、输入

5
1 2 2 4 1

2、输出

2

3、说明

频度最高的有1和2,频度是2(出现的次数都是2)。可以包含频度最高的记录数组是[2 2]和[1 2 2 4 1],最短是[2 2],最小长度为2。

在这里插入图片描述


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

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

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

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

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

相关文章

Nginx+花生壳实现个人网站

下载Nginx Windows版本&#xff0c;目前稳定版1.24&#xff0c;Mainline的版本是1.25 Nginx下载后是一个zip文件&#xff0c;选择适当的位置解压。 首先修改一下Nginx的配置文件nginx.conf&#xff0c;位于conf目录下面&#xff1a; 配置文件我只修改了访问的端口号&#xff…

文件操作之文件包含全解(31)

文件包含的作用就是将这个文件包含进去之后&#xff0c;会调用指定文件的代码。先将文件包含才能执行里面的一些相关代码&#xff0c;比如所想进行文件的链接&#xff0c;数据库的查询&#xff0c;就可以先包含一个数据库的配置文件&#xff0c; 再去链接的话就享有配置文件的一…

2023年6月北京/广州/深圳CDGA/CDGP数据治理认证招生

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

C#发送邮箱设置及源码

用C#调用发送邮箱代码之前需要邮箱开通SMTP/POP3及设置授权码&#xff0c;开通及获取方法如下&#xff1a; 1、打开邮箱&#xff0c;登录邮箱&#xff0c;进入设置&#xff0d;》帐户 2、在“帐户”设置中&#xff0c;找到服务设置项&#xff0c;进行设置&#xff0c;如下…

什么是软件测试?这份工作到底怎么样?

什么是软件测试&#xff1f;这份工作到底怎么样&#xff1f; 着人工智能时代的到来&#xff0c;IT行业受到了越来越多人的重视。软件测试作为把控软件质量必不可少的环节&#xff0c;其重要性可见一斑。 那么从事软件测试行业究竟有前途吗?今天我们就来详细的介绍一下软件测…

第34步 机器学习实战DLC:不平衡数据处理(上)

失踪人口回归的第一期&#xff0c;来说一说不平衡数据。 一、不平衡数据的概念 什么是不平衡数据&#xff1f;我们先来看看小Chat怎么说的&#xff1a; 顾名思义&#xff0c;就是你的因变量1和0的样本数差距有点大&#xff0c;大到影响了模型性能。举个栗子&#xff0c;一个盒…

详解CenterFusion损失函数初始化及前向传播过程

CenterFusion损失函数Loss初始化_get_losses函数以及计算过程forward函数 1. 损失函数初始化前序运行逻辑2. 损失函数初始化2.1 loss函数初始化——Trainer类中的_get_losses()函数2.2 model_with_loss的初始化 3. loss计算过程前序运行逻辑4. loss计算过程4.1 loss计算函数调用…

chatgpt赋能python:Python圆柱体积计算器:简单、高效、快速解决计算难题

Python圆柱体积计算器&#xff1a;简单、高效、快速解决计算难题 圆柱体积是一个在日常生活、工程学、数学等领域都十分普遍的概念&#xff0c;可以用来计算许多实际问题中的体积&#xff0c;比如容器的容量、建筑材料的用量等等。在本文中&#xff0c;我们将介绍如何使用Pyth…

部署和配置DHCP服务器实验:自动分配IP地址和网络配置

部署和配置DHCP服务器实验&#xff1a;自动分配IP地址和网络配置 【实验目的】 部署DHCP服务器。熟悉DHCP服务器的配置方法。验证拓扑。 【实验拓扑】 实验拓扑如图所示。 设备参数如下表所示。 设备 接口 IP地址 子网掩码 默认网关 DHCPSERVE F0/0 172.16.10.1 25…

大学生必知必会技能系列02--虚拟机安装

学习linux的时候&#xff0c;在自己的pc笔记本上安装Linux不太方便&#xff0c;解决方法是&#xff0c;在笔记本上安装 vmware虚拟机,然后再把计划要学习的Linux版本安装到虚拟机中&#xff0c;此时外部电脑能办公&#xff0c;虚拟机上的 代码也能正常运用。 一、VMware 17 虚拟…

2023年6月杭州/广州/东莞/深圳软考(中/高级)认证招生简章

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

09 【CLI 初始化脚手架 Vue零碎的一些知识】

09 【CLI 初始化脚手架 Vue零碎的一些知识】 1.Vue CLI 初始化脚手架 1.1具体步骤 1如果下载缓慢请配置npm淘宝镜像npm config set registry http://registry.npm.taobao.org 2全局安装 vue/cli npm install -g vue/cli 3切换到创建项目的目录&#xff0c;使用命令创建项目v…

递增子序列

1题目 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情况。 示例 1…

苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程

Stable Diffusion的部署对小白来说非常麻烦&#xff0c;特别是又不懂技术的人。今天分享两个一键傻瓜式安装包&#xff0c;对小白来说非常有用。下面两个任选一个安装就可以。 一、DiffusionBee 简单介绍 DiffusionBee是基于stable diffusion的一个安装包&#xff0c;有图形…

BIO NIO AIO之间的区别与联系

目录 前言五种I/O模型1.同步阻塞I/O, BIO2.同步非阻塞I/O, NIO3.多路复用IO4.信号驱动I/O5.异步I/O&#xff0c;AIO 同步阻塞&#xff1f;异步非阻塞&#xff1f;1.阻塞I/O 与 非阻塞I/O2.同步I/O 与 异步I/O Netty采用了哪种I/O模型? 前言 Unix系统下的五种基本I/O模型 blo…

【Jenkins】什么?前端还能用Jenkins一键部署?

前置要求&#xff1a; Jenkins安装nodejs插件&#xff08;本篇文章会教&#xff09; Linux安装Node.js&#xff08;图文解说详细版&#xff09; 如果你是一名前端工程师&#xff0c;那么你可能会对Jenkins这个自动化构建工具并不陌生。但是&#xff0c;你有没有想过在前端项目中…

Python+Django图书商城网站前后端

程序示例精选 PythonDjango图书商城网站前后端 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonDjango图书商城网站前后端 >>编写代码&#xff0c;代码整洁&#xff0c;规…

飞行器姿态计算

在飞行器的控制中&#xff0c;姿态计算是至关重要的一步。姿态计算的目标是确定飞行器相对于参考坐标系的姿态&#xff0c;通常以欧拉角&#xff08;滚转、俯仰和偏航&#xff09;或四元数的形式表示。 以下是姿态计算的原理和常用方法的简要介绍&#xff1a; 原理&#xff1a…

数据库系列:数据库高可用及无损扩容

1 背景 在大型互联网场景中&#xff0c;数据库的高可用性显得尤为重要&#xff0c;为了保证稳定性&#xff0c;一般需要采用强化的架构模式&#xff0c;以保证数据层能够提供持续有效的稳定支撑。 2 高可用架构的基本演进过程 2.1 基本的数据库架构 每个服务对应一个存储服…

FinancesOnline 2022/2023 10大IT趋势预测

在过去几十年的时间里&#xff0c;全世界的计算能力达到了万亿倍的增长。太空、军事和工业研究促成了范式的转变。与此同时&#xff0c;新冠肺炎大流行等不可预见的事件迫使人们去迎接新的技术&#xff0c;采用与以往不同的技术路径&#xff0c;这导致了IT趋势越来越难以跟上。…