华为OD机试之查找接口成功率最优时间段(Java源码)

news2024/12/28 21:01:45

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

题目描述

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

输入描述

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

输出描述

找出平均值小于等于minAverageLost的最长时间段,输出数组下标对,格式{beginIndex}-{endIndx}(下标从0开始),

如果同时存在多个最长时间段,则输出多个下标对且下标对之间使用空格(” “)拼接,多个下标对按下标从小到大排序。

用例

输入1
0 1 2 3 4
输出0-2
说明

输入解释:minAverageLost=1,数组[0, 1, 2, 3, 4]

前3个元素的平均值为1,因此数组第一个至第三个数组下标,即0-2

输入2
0 0 100 2 2 99 0 2
输出0-1 3-4 6-7
说明

输入解释:minAverageLost=2,数组[0, 0, 100, 2, 2, 99, 0, 2]

通过计算小于等于2的最长时间段为:

数组下标为0-1即[0, 0],数组下标为3-4即[2, 2],数组下标为6-7即[0, 2],这三个部分都满足平均值小于等于2的要求,

因此输出0-1 3-4 6-7

解析

这个题逻辑层面来看 比较简单。但是编程时发现还是蛮痛苦的。

  1. 最小值和输入数组的初始化
  2. 找出这个数组中 满足连续的 几个数的平均数小于 等于最小值的 下标范围
    例如:
    输入
    3
    1 2 3 5 8 1 1 1
    首先肯定 能找到的 0-3 因为 1+2+3+ 5=11 再除以4 其值小于3 的
    然后就是 后面的 三个1 即 5-7
    因此可以输出结果 0-3 5-7 但是真实结果真是这样的吗? 这个8就一定会被舍弃掉吗?其实这个答案是有问题的。如果你把所有内容全部求平均 其结果为 22/8 是小于3的 所以这个结果应该为0-7 而并非 0-3 5-7
  3. 可以考虑使用递归的方式来做,不断的移动数组的游标,尽可能找出以该游标开始的最大的范围的结束索引。下次递归时,就在该区间范围外进行递归即可。

示例代码

import java.util.Scanner;

public class Test1 {
	public static boolean flag = false;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int minAvg = Integer.parseInt(sc.nextLine());
		String input = sc.nextLine();
		String inputArr[] = input.split(" ");
		int arr[] = new int[inputArr.length];
		for (int i = 0; i < inputArr.length; i++) {
			arr[i] = Integer.parseInt(inputArr[i]);
		}
		dfs(0, arr, minAvg);
		if (!flag) {
			System.out.println("NULL");
		}
	}

	// 计算 某个索引 开始 一直到数组最后的 最大可能值 1
	public static void dfs(int left, int arr[], int minAvg) {
		if (left == arr.length)
			return;
		int count = 0;
		double sum = 0.0;
		int tempLeft = left;
		int objRight = left;// 目标最值右
		for (; tempLeft < arr.length; tempLeft++) {
			sum += arr[tempLeft];
			count++;
			if (sum / count <= minAvg) {
				objRight = tempLeft;
			}
		}
		if (objRight > left) {
			flag = true;
			System.out.print(left + "-" + objRight + " ");
			left = objRight; // 找到一个 区间满足 那下次从这个区间的下一个开始往下找 不然 找出的 可能为该区间的子区间
		}
		dfs(left + 1, arr, minAvg);
	}
}

代码运行结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【Web服务应用】Apache配置与应用

Apache配置与应用 一、构建虚拟Web主机1.1httpd服务支持的虚拟主机类型包括以下三种 二、基于域名的虚拟主机三、基于IP地址的虚拟主机四、基于端口的虚拟机五、Apache连接保持六、构建Web虚拟目录与用户授权限制七、日志分割 一、构建虚拟Web主机 虚拟Web主机指的是在同一台服…

手把手教你部署FreeYOLO

作者:Kissrabbit 原文链接: https://zhuanlan.zhihu.com/p/578830729 本章将讲解如何将torch训练好的权重文件转换为ONNX文件&#xff0c;并如何部署回到OpenVINO、TensorRT等框架下。笔者将以自己的FreeYOLO项目为例&#xff0c;来完成本章的内容讲解&#xff0c;相关代码如下…

企业数字化转型转什么?怎么转?这份攻略请收好...

数字化转型&#xff0c;转什么&#xff1f;怎么转&#xff1f;这些问题仍在困扰不少企业&#xff0c;也是每个企业转型升级不得不思考的重要问题。 对此&#xff0c;中关村数字经济产业联盟、元年研究院、《管理会计研究》联合发布了《成就数据驱动型企业 中国企业数字化转型白…

ROS订阅与发布话题

目录 一、新建一个ROS工作空间并创建功能包 二、创建一个msg消息 三、发布话题 四、订阅话题 前言 Ubuntu18.04 ROS Melodic 一、新建一个ROS工作空间并创建功能包 mkdir -p catkin_ws/src cd ~/catkin_ws/src/ catkin_init_workspace cd ~/catkin_ws/ catkin_make echo &…

USB接口的演变与升级

USB接口是计算机与外部设备之间传输数据的重要接口之一&#xff0c;它的演变和升级经历了多年的发展。本文将详细介绍USB接口的发展历程、应用领域、标准化进程以及未来趋势。 USB接口最早出现在1994年&#xff0c;当时是由英特尔公司、微软公司和惠普公司共同开发的。这个接口…

React中useEffect的源码解读

对源码的解读有利于搞清楚Hooks到底做了什么&#xff0c;如果您觉得useEffect很“魔法”&#xff0c;这篇文章也许对您有些帮助。 本篇博客篇幅有限&#xff0c;只看useEffect&#xff0c;力求简单明了&#xff0c;带您到React Hooks的深处看看 按图索骥找到Hook相关源码&…

JavaWeb之Servlet

1、什么是JavaWeb&#xff1f; Servlet 是 JavaEE 规范之一。规范就是接口 Servlet 就 JavaWeb 三大组件之一。三大组件分别是&#xff1a;Servlet 程序、Filter 过滤器、Listener 监听器。 Servlet 是运行在服务器上的一个 java 小程序&#xff0c;它可以接收客户端发送过来的…

Python plt; ax 设置tick

Python中绘图可以基于plt&#xff1b;也可基于ax 在 Matplotlib 中&#xff0c;Axes 对象&#xff08;常简写为 ax&#xff09;是在图&#xff08;Figure&#xff09;中进行大部分的绘图操作的地方。一个 Axes 对象代表了一个具体的绘图区域。 利用 plt 绘图 简单的图像测试…

继续探索Roop(单张图视频换脸)的各方面:比如喜闻乐见的“加速”

文章目录 &#xff08;一&#xff09;Roop项目的特点&#xff08;二&#xff09;Roop也能加速***&#xff08;三&#xff09;Roop更新和依赖&#xff08;3.1&#xff09;飞速更新&#xff08;3.2&#xff09;依赖问题&#xff08;3.3&#xff09;需要CUDA么 前两天写了&#x1…

如何修复vcruntime140.dll文件?多种解决vcruntime140.dll的方法分享

在使用Windows操作系统时&#xff0c;经常会遇到一些错误提示&#xff0c;比如缺少vcruntime140.dll文件。这个文件是Visual C Redistributable Package的一部分&#xff0c;它负责运行C程序。如果你在运行某些软件或游戏时收到了“缺少vcruntime140.dll文件”的错误提示&#…

电子科技大学计算机系统结构半期考试参考答案

2023 答案-半期试题&#xff08;15分&#xff09; 1、试分析采用哪种设计方案实现求浮点数乘法FPMUL对系统性能提高更大。假定FPMUL操作占整个测试程序执行时间的10%。 一种设计方案是增加专门的FPMUL硬件&#xff0c;可以将FPMUL操作的速度加快到10倍&#…

IP协议与ethernet协议

一、IP协议 1.IP协议作用和意义 &#xff08;1&#xff09;计算机网络体系结构 &#xff08;2&#xff09;网络互联使用路由器 &#xff08;3&#xff09;IP网的意义 当互联网上的主机进行通信时&#xff0c;就好像在一个网络上通信一样&#xff0c;看不见互连的各具体的网络…

Vue.js 中的渲染函数是什么?如何使用渲染函数?

Vue.js 中的渲染函数是什么&#xff1f;如何使用渲染函数&#xff1f; Vue.js 是一款流行的前端框架&#xff0c;它提供了许多方便的工具和 API&#xff0c;用于构建交互式的用户界面。其中&#xff0c;渲染函数是 Vue.js 中一个强大的工具&#xff0c;它可以让我们以编程的方…

深度解析java异步多线程优化版

快速使用需求&#xff1a;我不要理解一堆理论想直接用 操作说明 ITask.java PutEsTask.java TaskExecutor.java TaskQueue.java TestMain.java请把这几个类文件复制下去&#xff0c;运行testMain的方法&#xff0c;根据TestMain的运行日志&#xff0c;【1】-> 【8】不同需求…

2.3 网络设计与redis、memcached、nginx组件

目录 一、网络模块需要处理哪些事情二、reactor网络设计模型三、网络模块与业务的关系四、redis、memcached、nginx1、redis2、memcached3、ngnix4、总结 一、网络模块需要处理哪些事情 网络编程主要关注客户端与服务端交互的四个问题&#xff1a; 1、连接建立 2、消息到达 3、…

《不要挑战人性》笔记(一)

恒河猴实验 代母实验 将刚出生的小猴子与母亲分开&#xff0c;让它与绒布妈妈跟铁丝妈妈生活在一起。铁丝妈妈身上有食物&#xff0c;绒布没有食物&#xff0c;小猴子更喜欢绒布妈妈&#xff0c;即使它在铁丝妈妈那里得到了食物。绒布妈妈身上设置机关&#xff0c;攻击小猴子&a…

OAuth2 工作流程详解

我们之前谈到了使用saml作为SSO单点登录认证。本文讲解oauth2.0协议&#xff0c;oauth2.0协议避免了客户端直接访问受保护资源 什么是OAuth OAuth是一种安全的开放协议&#xff0c;用于在不相关的服务之间授权用户。换句话说&#xff0c;它使一个服务能够访问托管在其他服务上…

Flutter 笔记 | GetX

官网&#xff1a;https://pub.dev/packages/get 中文文档&#xff1a;https://github.com/jonataslaw/getx/blob/master/README.zh-cn.md 关于 GetX 现在Flutter的状态管理方案很多&#xff0c;redux、bloc、state、provider、Getx。 provider是官方提供的状态管理解决方案&…

小程序分包详解

一&#xff1a;什么是小程序分包 分包指的是把一个完整的小程序项目&#xff0c;按照需求划分为不同的子包&#xff0c;在构建时打包成不同的分包&#xff0c;用户在使用时按需进行加载。 二&#xff1a;为什么使用分包 小程序第一版 推出 小程序代码包不能超过1MB 大小&…

java SSM 教代会审批管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 教代会管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码 和数据库&#xff0c;系统主要采用…