华为OD机试真题-查找接口成功率最优时间段

查找接口成功率最优时间段

题目描述

服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为0~100的整数,给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值,即平均失败率小于等于 minAverageLost,找出数组中最长时间段,如果未找到则直接返回NULL。

输入描述:

输入有两行内容,第一行为{minAverageLost},第二行为{数组},数组元素通过空格("")分隔,minAverageLost及数组中元素取值范围为0~100的整数,数组元素的个数不会超过100个。


输出描述:

找出平均值小于等于minAverageLost的最长时间段,输出数组下标对,格式{beginIndex}-{endlndx}(下标从0开始),如果同时存在多个最长时间段,则输出多个下标对且下标对之间使用空格("")拼接,多个下标对按下标从小到大排序。

示例1

输入 

1
01234
输出
0-2
说明
A、输入解释:minAverageLost=1,数组[0,1,2,3.4]
B、前3个元素的平均值为1,因此数组第一个至第三个数组下标,即0-2

Java实现

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入的平均失败率容忍值和数组int minAverageLost = Integer.parseInt(scanner.nextLine()); // 读取平均失败率容忍值String[] rates = scanner.nextLine().split(" "); // 读取包含失败率的字符串并分割成数组int[] failures = Arrays.stream(rates).mapToInt(Integer::parseInt).toArray(); // 将字符串数组转换为整数数组List<String> result = new ArrayList<>(); // 用于存储结果的列表// 外层循环,遍历所有可能的起始位置for (int i = 0; i < failures.length; i++) {int sum = 0;// 内层循环,计算以当前起始位置开始的所有可能时间段for (int j = i; j < failures.length; j++) {sum += failures[j]; // 计算当前时间段内的失败次数总和double average = (double) sum / (j - i + 1); // 计算当前时间段的平均失败率if (average <= minAverageLost) { // 如果平均失败率小于等于容忍值if (result.isEmpty() || (j - i) > (Integer.parseInt(result.get(0).split("-")[1]) - Integer.parseInt(result.get(0).split("-")[0]))) {// 如果找到的时间段更长,则更新结果result.clear(); // 清空结果列表result.add(i + "-" + j); // 将当前时间段加入结果列表} else if ((j - i) == (Integer.parseInt(result.get(0).split("-")[1]) - Integer.parseInt(result.get(0).split("-")[0]))) {// 如果找到的时间段与已有最长时间段等长,则将其加入结果列表result.add(i + "-" + j);}}}}Collections.sort(result); // 对结果列表进行排序if (result.isEmpty()) {System.out.println("NULL"); // 如果结果列表为空,则输出"NULL"} else {System.out.println(String.join(" ", result)); // 输出结果列表中的内容}}
}

 解题思路:

我们的目标是找到一个或多个连续时间段,这些时间段内的平均失败率低于或等于给定的容忍值。下面是算法的解题思路:

  1. 从输入中读取平均失败率的容忍值和包含失败率的数组。
  2. 将输入的字符串数组转换为整数数组,方便后续计算。
  3. 创建一个列表(result)来存储符合条件的时间段。
  4. 使用两层循环遍历所有可能的时间段起始位置和结束位置:
    • 外层循环遍历可能的起始位置 i
    • 内层循环遍历以 i 为起始位置的所有可能结束位置 j
    • 在内层循环中,计算从 i 到 j 的失败次数总和 sum,然后计算平均失败率 average
    • 如果 average 小于等于容忍值,将当前时间段加入结果列表 result 中
  5. 对结果列表进行排序。
  6. 如果结果列表为空,则输出 "NULL";否则,输出结果列表中的内容。

这个算法的核心思想是通过两层循环遍历所有可能的时间段,计算出每个时间段的平均失败率,并找出符合条件的最长时间段。

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

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

相关文章

“比特币深夜冲破7万美元”!华尔街押注比特币:究竟是牛市墙头草,还是加密真信徒?

比特币ETF&#xff0c;使此次加密牛市与以往的繁荣、萧条周期截然不同。以往的周期往往由热衷风险的投机者以及最终崩盘的加密项目所驱动&#xff0c;例如无实物资产支持的加密货币借贷&#xff0c;以及一地鸡毛的ICO热潮。而现在&#xff0c;传统金融已经与加密世界联姻&#…

从零到一,构建坚如磐石的Redis 7高可用集群:全程实录与关键技术详解

1、引言 在日常的开发中&#xff0c;无论是主从复制还是哨兵模式&#xff0c;都在高并发的场景中存在致命的缺点&#xff1a; 主从复制&#xff1a;当Master Redis机器挂掉之后&#xff0c;Slave依旧可以读取数据&#xff0c;但是由于Master不能写数据了&#xff0c;所以就会…

python自动化测试如何做数据缓存 ?这个第三方包推荐给你,方便又简单!

1.数据缓存说明 数据缓存可以说也是项目开发中比不可少的一个工具 &#xff0c;像我们测试的系统中 &#xff0c;你都会见到像Redis一样的数据缓存库 。使用缓存数据库的好处不言而喻&#xff0c;那就是效率高 &#xff0c;简单数据直接放在缓存中 &#xff0c;存取简单方便 。…

[Vue]中数组的操作用法

列举了在Vue操作数据时&#xff0c;对数组的一些方法 1.增加功能 在数组尾部增加 push() push()&#xff1a;向数组的末尾添加一个或更多元素&#xff0c;并返回新的长度。 arr [1,2,3,4,5] arr.push(6) //arr [1,2,3,4,5,6] 在数组头部增加 unshift() unshift()&#…

Golang中处理map和list的初始化问题

Golang中处理map和list的初始化问题 大家好&#xff01;今天我们来聊聊Go语言中两个非常实用但有时又让人头疼的家伙——map&#xff08;映射&#xff09;和slice&#xff08;切片&#xff09;。想象一下&#xff0c;你在编程的世界里是一位厨师&#xff0c;而map和slice就像是…

每日OJ题_牛客CM26 二进制插入

目录 牛客CM26 二进制插入 解析代码 牛客CM26 二进制插入 二进制插入_牛客题霸_牛客网 解析代码 class BinInsert { public:int binInsert(int n, int m, int j, int i) {// 1 2 4 8 16 32 64 128 256 512 1014// 1024 2 4 32 // 1024 4 8 64 1024 76// 1000000000…

面向切面编程(AOP)介绍(横切关注点、通知(增强)、连接切入点、切面)

1. 面向切面编程思想AOP AOP&#xff1a;Aspect Oriented Programming面向切面编程 AOP可以说是OOP&#xff08;Object Oriented Programming&#xff0c;面向对象编程&#xff09;的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构&#xff0c;用于模拟公…

Qt对话框介绍

消息对话框 QMessageBox&#xff1a;消息对话框&#xff0c;用于向用户展示简单的信息&#xff0c;警告&#xff0c;错误或者询问对话框。 信息框 QMessageBox::information(nullptr,"标题","信息"); 警告框 QMessageBox::warning(nullptr,"标题&…

go语言基础 -- 面向对象编程

go语言面向对象编程思想 面向对象编程离不开封装、继承、多态三个特性&#xff0c;go语言与其他c、java不太一样&#xff0c;没有类的概念&#xff0c;面向对象的实现也有些区别&#xff0c;下面分别描述。 go语言封装 结构体中字段如欲对外隐藏&#xff0c;首字母小写&…

JavaEE进阶(15)Spring原理:Bean的作用域、Bean的生命周期、Spring Boot自动配置(加载Bean、SpringBoot原理分析)

接上次博客&#xff1a;JavaEE进阶&#xff08;14&#xff09;Linux基本使用和程序部署&#xff08;博客系统部署&#xff09;-CSDN博客 目录 关于Bean的作用域 概念 Bean的作用域 Bean的生命周期 源码阅读 Spring Boot自动配置 Spring 加载Bean 问题描述 原因分析 …

Intellij IDEA 中 git 操作的快捷键

1.添加新建的文件 即add 操作 shift alt a 2.提交操作 即 commit操作 ctrl k 在窗口中可以用feature来声明此次更新的内容 3.提交操作 即push操作 ctrl shift k 4.拉去远程分支操作 即pull操作 ctrl t

国产 PD控制器产品-XS2103S&XS2103D&XS2104,兼容于IEEE 802.3 at/af

国产PD控制器产品-XS2103S&#xff06;XS2103D&#xff06;XS2104&#xff0c;兼容于IEEE 802.3 at/af 芯片特性 兼容于IEEE 802.3 at/af 2级事件分级 简易的墙上适配器接口 0至4级PoE分级 100V绝对最大额定输入 150mA最大浪涌电流限制 正常工作期间电流限制880mA 电流…

Spring学习 基础(三)MVC

5、Spring MVC 传统Web模式&#xff1a; Model:系统涉及的数据&#xff0c;也就是 dao 和 bean。View&#xff1a;展示模型中的数据&#xff0c;只是用来展示。Controller&#xff1a;处理用户请求都发送给 &#xff0c;返回数据给 JSP 并展示给用户。 随着 Spring 轻量级开发…

C if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 语法 C 语言中 if 语句的语法&#xff1a; if(boolean_expression) {/* 如果布尔表达式为真将执行的语句 */ }如果布尔表达式为 true&#xff0c;则 if 语句内的代码块将被执行。如果布尔表达式为 false&#xff0c;…

poll开发服务器

int poll(struct pollfd *fds, nfds_t nfds, int timeout); 函数说明&#xff1a;与select类似&#xff0c;委托内核监控可读&#xff0c;可写&#xff0c;异常事件。 函数说明&#xff1a; fds&#xff1a;一个struct pollfd结构体数组的首地址 struct pollfd { …

天猫淘宝详情接口API揭秘:实现个性化商品推荐!

天猫淘宝作为中国最大的电商平台&#xff0c;拥有庞大的商品库存和众多用户&#xff0c;为了提高用户购物体验并满足其个性化需求&#xff0c;天猫淘宝推出了详情接口API&#xff0c;通过智能算法实现个性化商品推荐。联讯数据将为您揭秘详情接口API的实现原理和功能。 个性化商…

信息抽取在旅游行业的应用:以景点信息抽取为例

开源项目推荐 今天先给大家推荐一个开源项目&#xff0c;多模态AI能力引擎平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口&#xff0c;功能强大&#xff0c;欢迎体验。 https://gitee.com/stonedtx/free-nlp-api 场景描述 在旅游行业…

【新书推荐】17.3 字符串操作举例

本节内容&#xff1a;字符串操作举例。 ■例3&#xff1a;接收字符串去掉空格后逆向输出&#xff0c;t17-3.asm。 ■例4&#xff1a;字符串拼接&#xff0c;t17-4.asm。 ■例5&#xff1a;判断子串&#xff0c;t17-5.asm。 17.3.1 例3&#xff1a;接收字符串去掉空格后逆向输出…

如何关闭 Visual Studio 双击高亮

[问题描述]&#xff1a; 最近 Visual Studio 更新后&#xff0c;双击选中关键字快要亮瞎我的眼睛了 &#x1f440;&#x1f440; [解决方法]&#xff1a; 摸索了一下&#xff0c;找到了关闭的方法&#xff1a;工具 → 选项 → 文本编辑器 → 常规&#xff0c;然后取消 勾选 sel…

蓝桥杯-串的处理,幸运数字

参照大佬写法: #include<iostream> #include<cstring> using namespace std; int main(){string str;getline(cin,str);//可以将带有空格的string输入for(int i0;i<str.size();i){if(i0&&str[i]>a&&str[i]<z) str[i]-32;//单词首字母小…