华为OD机试 - 找磨损度最高和最低的硬盘 - 优先队列(Java 2024 C卷 100分)

devtools/2024/9/19 6:00:48/ 标签: 华为od, 算法, java, 优先队列

在这里插入图片描述

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

存储阵列上使用的一批固态硬盘,根据硬盘磨损值给定一个数组endurances,数组中每个元素表示单块硬盘的磨损度(0到10000之间)。

磨损度越大,表示此盘需要更换的概率越高。需要找出磨损度最高三块盘下标和磨损度最低的三块盘下标。

二、输入描述

一组硬盘磨损度的数组。

说明:

(1) 数组endurances中无重复值

(2) 数组的长度范围:[6,200]

(3) 数组的下标从0开始。

三、输出描述

第一行:磨损度最高三块盘下标,按下标升序展示

第二行:磨损度最低的三块盘下标,按下标升序展示

1、输入

1 50 40 68 72 86 35 14 87 99 63 75

2、输出

5 8 9
0 6 7

四、解题思路

  1. 创建一个大小为 3 的最小堆(min heap)和一个大小为 3 的最大堆(max heap),用于存储磨损度最高的三块盘和最低的三块盘。
  2. 遍历硬盘磨损度的数组,将每个磨损度元素添加到堆中。
  3. 如果堆的大小超过 3,则将堆顶元素弹出,保持堆的大小为 3。
  4. 最后,将堆中的元素按顺序弹出,得到磨损度最高三块盘和最低三块盘的下标。
  5. 输出结果。

五、Java算法源码

java">public class OdTest01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] endurances = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();int[] maxIndexes = getMaxIndexes(endurances);int[] minIndexes = getMinIndexes(endurances);// 输出结果System.out.println(Arrays.toString(minIndexes));System.out.println(Arrays.toString(maxIndexes));}// 获取磨损度最高三块盘下标public static int[] getMaxIndexes(int[] endurances) {// 创建一个最大堆PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());// 遍历磨损度数组,将每个元素添加到最大堆中for (int i = 0; i < endurances.length; i++) {maxHeap.offer(endurances[i]);// 如果堆的大小超过 3,则弹出堆顶元素if (maxHeap.size() > 3) {maxHeap.poll();}}// 将堆中的元素按顺序弹出,得到磨损度最高三块盘的下标int[] indexes = new int[3];for (int i = 0; i < 3; i++) {indexes[i] = findIndex(endurances, maxHeap.poll());}// 按下标升序排序Arrays.sort(indexes);return indexes;}// 获取磨损度最低三块盘下标public static int[] getMinIndexes(int[] endurances) {// 创建一个最小堆PriorityQueue<Integer> minHeap = new PriorityQueue<>();// 遍历磨损度数组,将每个元素添加到最小堆中for (int i = 0; i < endurances.length; i++) {minHeap.offer(endurances[i]);// 如果堆的大小超过 3,则弹出堆顶元素if (minHeap.size() > 3) {minHeap.poll();}}// 将堆中的元素按顺序弹出,得到磨损度最低三块盘的下标int[] indexes = new int[3];for (int i = 0; i < 3; i++) {indexes[i] = findIndex(endurances, minHeap.poll());}// 按下标升序排序Arrays.sort(indexes);return indexes;}// 找到指定磨损度在数组中的下标public static int findIndex(int[] endurances, int value) {for (int i = 0; i < endurances.length; i++) {if (endurances[i] == value) {return i;}}return -1;}
}

六、效果展示

1、输入

23 34 56 12 11 10

2、输出

0 1 2
3 4 5

3、说明

0 1 2:表示磨损度最高三块盘的下标
3 4 5:表示磨损度最低的三块盘的下标

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


http://www.ppmy.cn/devtools/37986.html

相关文章

掌握Ansible命令——提高自动化运维效率

目录 一、Ansible命令 1.定义 2.组成 3.命令格式 4.选项 5.示例 二、常用命令解释 1.ansible-doc 2.ansible-galaxy 3.ansible-playbook 4.ansible-pull 5.ansible-vault 三、高频使用的命令 1.Ping主机 2.执行命令 3.安装软件包 4.管理文件 5.管理服务 6.获…

如何利用AI提高内容生产效率

目录 一、自动化内容生成 二、内容分发与推广 三、内容分析与优化 图片来源网络&#xff0c;侵权联系可删 一、自动化内容生成 随着AI技术的飞速发展&#xff0c;自动化内容生成已经成为提高内容生产效率的重要手段。AI可以通过自然语言处理&#xff08;NLP&#xff09;、机…

无处不在的AI:被科技巨头盯上的Agent智能体的崭新时代

&#x1f97d;一.Agent AI智能体 Agent AI 智能体是一种基于人工智能技术的智能代理&#xff0c;它可以自主地执行任务、与环境进行交互&#xff0c;并根据环境的变化做出决策。 OpenAI将AI Agent定义为以大语言模型&#xff08;LLM&#xff09;为大脑驱动具有自主理解、感知、…

Temu、阿里国际站、TikTok的“速度战役”

事实上&#xff0c;经过多年的发展&#xff0c;电商早已深入到了人们的日常生活中&#xff0c;消费者也越来越习惯网上购物了。伴随着消费者网购需求的攀升&#xff0c;电商行业也跑出了诸多企业&#xff0c;时至今日&#xff0c;新老玩家在电商领域的“角力”仍在持续进行中。…

(41)5.6-5.7数据结构(栈和队列的应用)

1.栈在括号匹配中的应用 #define _CRT_SECURE_NO_WARNINGS #define MaxSize 10 typedef struct { char data[MaxSize];//静态数组存放栈中元素 int top; //栈顶指针 }SqStack;//初始化栈 void InitStack(SqStack& S);//判断栈是否为空 bool StackEmpty(SqStack S…

MYSQL数据库中数据的增删改查

环境搭建 1.创建数据库 CREATE DATABASE IF NOT EXISTS cass DEFAULT CHARSET utf8; 2.创建数据表 CREATE TABLE IF NOT EXISTS cass.cassTables( ID INT UNSIGNED AUTO_INCREMENT, name VARCHAR(10) NOT NULL, sex CHAR(1), age TINYINT UNSIGNE…

【XR806开发板试用】阻塞式串口发送与接收教程

本文基于wsl2搭建的ubuntu18.04 vscode编辑器 很奇怪啊&#xff0c;找了半天居然没人发串口的教程&#xff0c;于是只能自己试一试了&#xff0c;在此发一个阻塞式的串口发送与接收的教程。并且&#xff0c;感谢.ACE彭洪权大佬在我配置环境遇到几十个报错的时候帮我远程搭建环…

使用socket+Python实现ping

import os import socket import struct import select import time# 计算校验和&#xff0c;用于确保数据的完整性 def checksum(source_string):sum 0count 0max_count len(source_string)# 处理成对的字节while count < max_count - 1:val source_string[count 1] *…

使用wxPython和pandas模块生成Excel文件

介绍&#xff1a; 在Python编程中&#xff0c;有时我们需要根据特定的数据生成Excel文件。本文将介绍如何使用wxPython和pandas模块来实现这个目标。我们将创建一个简单的GUI应用程序&#xff0c;允许用户选择输出文件夹和输入的Excel文件&#xff0c;并根据Excel文件中每个单…

【管理咨询宝藏93】大型制造集团数字化转型设计方案

【管理咨询宝藏93】大型制造集团数字化转型设计方案 【格式】PDF版本 【关键词】国际咨询公司、制造型企业转型、数字化转型 【核心观点】 - 235页大型制造型集团数字化转型方案设计&#xff01;细节非常详尽&#xff0c;图表丰富&#xff01; - 系统架构必须采用成熟、具有国…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑&#xff0c;在token流重构完成后&#xff0c;此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合&#xff0c;每一个文件都为一个包含require文件名的token数组 接着回到main.php中&#xff0c;此时…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

掌握TypeScript的非空断言(!)和可选链(?):开发效率翻倍!

引言 标题&#xff1a;掌握TypeScript的非空断言和可选链&#xff1a;开发效率翻倍&#xff01;简短介绍&#xff1a;在TypeScript中&#xff0c;?和!操作符是提高代码安全性和开发效率的强大工具。本文将为你揭示它们的使用方式和最佳实践。 背景知识 易于理解的解释&…

数据库权限管理

1.查看系统级权限&#xff08;global level) Select * from mysql.user\G; 2.查看数据库中所有表的权限 Select * from mysql.db\G 3.远程连接数据库 第一步在有数据库服务上的主机上&#xff1a;授权 grant all on *.* to root192.168.40.83 identified by Zxy20234; 第…

Atlassian Jira 信息泄露漏洞(CVE-2019-3403) 排查思路

Atlassian Jira&#xff1a; 企业广泛使用的项目与事务跟踪工具&#xff0c;被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 简述&#xff1a; 近日发现多个内网IP触发的Atlassian Jira 信息泄露漏洞的告警。 告警的检测规…

Octave行列式矩阵运算

Octave 行列式矩阵运算 Octave 计算行列式指令一步步计算行列式 Octave 矩阵加法Octave 矩阵乘法Octave 矩阵转置Octave 矩阵求秩Octave 矩阵求逆Octave 矩阵化为最简形式 仅供本人查阅 Octave 是一个开源的数值计算软件&#xff0c;主要用于数学计算、算法开发和数据可视化。它…

实用的Chrome命令

常用命令&#xff1a; 如下为常用的chrome命令&#xff0c;欢迎尝试体验。 1. chrome://downloads 查看下载内容 2. chrome://extensions 查看扩展 3. chrome://plugins 显示已安装插件 4. chrome://bookmarks 书签管理器 5. chrome://history 历史直接访问 6. chrome://res…

软件系统安全设计规范(word原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件资料清单列表部分文档…

Window安装OpenSSH客户端及服务

文章目录 引言I 给windows安装一个ssh服务1.1 下载对应的OpenSSH1.2 安装sshd服务1.3 开放22端口1.4 配置sshd服务自动启动1.5 验证ssh是否可用II 服务部署III 公钥登录 Windows OpenSSH Server3.1 生成公钥-私钥对,把公钥复制到目标机器的3.2 授予对AuthorizedKeysFile权限3.…

详细讲解lua中string.gsub的使用

string.gsub 是 Lua 标准库中的一个函数&#xff0c;用于全局替换字符串中的某些部分。string.gsub 是 Lua 中非常实用的一个函数&#xff0c;它可以用来进行字符串的处理和替换操作。 它的基本语法如下&#xff1a; string.gsub(s, pattern, replacement [, n])s 是要处理的…