华为OD刷题C卷 - 每日刷题 19(查找接口成功率最优时间段、最大N个数与最小N个数的和)

1、(查找接口成功率最优时间段):

这段代码是解决“查找接口成功率最优时间段”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,以及一个辅助方法getSum,用于找出数组中最长的时间段,该时间段内的平均失败率小于等于给定的容忍值minAverageLost

main方法首先读取失败率容忍值minAverageLost和失败率数组arr,然后调用getResult方法并打印满足条件的最长时间段的下标对。

getResult方法使用双层循环遍历数组arr的所有可能子区间,通过getSum方法计算每个子区间的和,然后根据和与容忍值minAverageLost的关系来判断该子区间是否满足条件。如果满足条件,就更新最长时间段的记录,并存储下标对。最后,将所有满足条件的最长时间段的下标对按从小到大排序并返回。

getSum方法用于计算数组arr从索引startend的元素之和。

2、(最大N个数与最小N个数的和):

这段代码是解决“最大N个数与最小N个数的和”的问题。它提供了一个Java类Main,其中包含main方法和getSum方法,用于计算数组中最大N个数与最小N个数的和,同时需要对数组进行去重。

main方法首先读取数组的大小M和数组内容,然后读取需要计算的个数N,接着调用getSum方法并打印结果。

getSum方法首先检查输入的合法性,包括数组是否为空、数字是否在指定范围内。然后,使用HashSet对数组进行去重,并检查去重后的集合大小是否小于2 * N,如果是,则返回-1表示输入非法。接着,将去重后的集合转换为列表并排序。最后,使用双指针技术计算最大N个数与最小N个数的和。

package OD282;import java.util.*;/*** @description 查找接口成功率最优时间段* @level 6* @score 100*//*** 题目描述* 服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,* <p>* 数组中每个元素都是单位时间内失败率数值,数组中的数值为0~100的整数,* <p>* 给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值,即平均失败率小于等于minAverageLost,* <p>* 找出数组中最长时间段,如果未找到则直接返回NULL。* <p>* 输入描述* 输入有两行内容,第一行为{minAverageLost},第二行为{数组},数组元素通过空格(” “)分隔,* <p>* minAverageLost及数组中元素取值范围为0~100的整数,数组元素的个数不会超过100个。* <p>* 输出描述* 找出平均值小于等于minAverageLost的最长时间段,输出数组下标对,格式{beginIndex}-{endIndx}(下标从0开始),* <p>* 如果同时存在多个最长时间段,则输出多个下标对且下标对之间使用空格(” “)拼接,多个下标对按下标从小到大排序。*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//minAverageLostint minAverageLost = Integer.parseInt(sc.nextLine());int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();System.out.println(getResult(arr, minAverageLost));}//找出平均值小于等于n的最长时间段,输出对应下标 如0-1 3-4 多个下标对按从小到大排序public static String getResult(int[] arr, int minAverageLost) {//存放最长时间段 可以有多个List<int[]> list = new ArrayList<>();//初始化最大长度int maxLen = 0;for (int i = 0; i < arr.length; i++) {for (int j = i; j < arr.length; j++) {//区间[i,j]的和int sum = getSum(arr, i, j);int len = j - i + 1;int lost = len * minAverageLost;if (sum <= lost) {//如果len>maxLen 则清空list,并添加最新的,重置maxLen//如果len=maxLen,则直接添加进listif (len >= maxLen) {if (len > maxLen) {//清空之前maxLen长度的listlist.clear();}//然后再添加list.add(new int[]{i, j});maxLen = len;}}}}//未找到则返回NULLif (list.isEmpty()) {return "NULL";}//按开始下标升序排序list.sort(Comparator.comparingInt(a -> a[0]));//添加进结果StringJoiner sj = new StringJoiner(" ");list.forEach(t -> sj.add(t[0] + "-" + t[1]));//for (int[] temp : list) {//    sj.add(temp[0] + "-" + temp[1]);//}return sj.toString();}//从数组中start加到end位置的和public static int getSum(int[] arr, int start, int end) {int sum = 0;for (int i = start; i <= end; i++) {sum += arr[i];}return sum;}
}
package OD283;import java.util.*;/*** @description 最大N个数与最小N个数的和* @level 6*//*** 题目描述* 给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。* <p>* 说明:* <p>* 数组中数字范围[0, 1000]* 最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1* 输入非法返回-1* 输入描述* 第一行输入M, M标识数组大小* 第二行输入M个数,标识数组内容* 第三行输入N,N表达需要计算的最大、最小N个数* 输出描述* 输出最大N个数与最小N个数的和*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//数字个数int m = Integer.parseInt(sc.nextLine());int[] arr = new int[m];for (int i = 0; i < m; i++) {arr[i] = sc.nextInt();}//最大最小个数int n = sc.nextInt();System.out.println(getSum(arr, n));}//返回数组中最大最小n个数的和,有重叠返回-1public static int getSum(int[] arr, int n) {if (arr == null || arr.length == 0 || n <= 0) {return -1;}//数字范围为0-1000Set<Integer> set = new HashSet<>();for (int num : arr) {if (num < 0 || num > 1000) {return -1;}set.add(num);}//去重后如果set的大小小于2n,则一定会重叠if (set.size() < 2 * n) {return -1;}//排序set中的数List<Integer> list = new ArrayList<>(set);Collections.sort(list);//最大最小n个数的和int ans = 0;//左指针int l = 0;//右指针int r = list.size() - 1;while (n > 0) {ans += list.get(l) + list.get(r);l++;r--;n--;}return ans;}
}

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

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

相关文章

微信小程序毕业设计-网吧在线选座系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

力扣 T62 不同路径

题目 连接 思路 思路1 &#xff1a; BFS爆搜 class Solution { public:queue<pair<int,int>>q;int uniquePaths(int m, int n) {q.push({1,1}); // 起始位置vector<pair<int, int>> actions;actions.push_back({0, 1}); // 向下actions.push_bac…

ant-desigin-vue动态表头并填充数据

ant-design-vue 是一个基于 Ant Design 设计规范和 Vue.js 的 UI 组件库。如果你想在 ant-design-vue 中实现动态表头并填充数据&#xff0c;你可以使用 a-table 组件并动态生成其 columns 和 dataSource 属性。 以下是一个简单的示例&#xff0c;展示了如何动态生成表头和填充…

【网络编程开发】11.IO模型 12.IO多路复用

11.IO模型 什么是IO: IO 是 Input/Output 的缩写&#xff0c;指的是输入和输出。在计算机当中&#xff0c;IO 操作通常指将数据从一个设备或文件中读取到计算机内存中&#xff0c;或将内存中的数据写入设备或文件中。这些设备可以包括硬盘驱动器、网卡、键盘、屏幕等。 通常用…

selenium自动化测试入门 —— Alert/Confirm/Prompt 弹出窗口处理!

一、Alert/Confirm/Prompt弹出窗口特征说明 Alert弹出窗口&#xff1a; 提示用户信息只有确认按钮&#xff0c;无法通过页面元素定位&#xff0c;不关闭窗口无法在页面上做其他操作。 Confirm 弹出窗口&#xff1a; 有确认和取消按钮&#xff0c;该弹出窗口无法用页面元素定…

06_深度学习历史的里程碑--重读AlexNet

1.1 介绍 AlexNet是深度学习历史上一个非常重要的卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;模型&#xff0c;由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年设计并提出。它因在ImageNet大规模视觉识别挑战赛中的卓越表现而闻名&a…

2024世界技能大赛某省选拔赛“网络安全项目”B模块--数据包分析(jsp流量解密)

2024世界技能大赛某省选拔赛“网络安全项目”B模块--数据包分析② 任务一、网络数据包分析取证解析:任务一、网络数据包分析取证解析: A 集团的网络安全监控系统发现有恶意攻击者对集团官方网站进行攻击,并抓取了部分可疑流量包。请您根据捕捉到的流量包,搜寻出网络攻击线…

冯喜运:6.10周一黄金还会再次拉升吗?日内黄金原油操作策略

【黄金消息面分析】&#xff1a;周一(6月10日)亚市盘中&#xff0c;现货黄金交在上周五暴跌后仍然承压&#xff0c;目前金价位于2294美元/盎司左右。因强劲非农数据刺激美元大涨&#xff0c;现货黄金上周五出现暴跌。此外&#xff0c;上周五数据显示&#xff0c;最大黄金消费国…

在python中关于元组的操作

创建元组 如上图所示&#xff0c;a&#xff08;&#xff09;和b tuple(),,这两种方式都可以创建出元组。 在创建元组的时候&#xff0c;指定初始值 如上图所示&#xff0c;也可以在创建元组的时候&#xff0c;指定初始值。 同列表一样元组中的元素也可以是任意类型的。 同列…

Qt 布局管理

布局基础 1)Qt 布局管理系统使用的类的继承关系如下图: QLayout 和 QLayoutItem 这两个类是抽象类,当设计自定义的布局管理器时才会使用到,通常使用的是由 Qt 实现的 QLayout 的几个子类。 2)Qt 使用布局管理器的步骤如下: 首先创建一个布局管理器类的对象。然后使用该…

封装了一个简单理解的iOS竖直文字轮播

效果图 原理 就是持有两个视图&#xff0c;并且两个视图同时改变origin.y 动画结束之后&#xff0c;判断哪个视图是在上面并且看不到的&#xff0c; 则将该视图移动到底部&#xff0c;并且该视图展示下一跳内容 在开始下一轮动画 代码 - (void)startAnimationWithDuration:(…

React 和 Vue的跨端|跨平台框架介绍

React 和 Vue 都有各自的生态系统&#xff0c;可以实现跨平台开发&#xff0c;包括 Web、iOS、Android 和其他平台。 Vue.js 的跨平台框架和服务器端渲染框架&#xff1a; Weex&#xff1a;Weex 是一个由阿里巴巴开发的跨平台框架&#xff0c;它可以使用 Vue.js 编写原生应用&a…

【Linux】网络配置(静态/动态/手动/nmcli)

目录 一、手动修改网络配置文件&#xff1a;静态 二、手动修改网络配置文件&#xff1a;动态 三、nmcli工具命令修改网络配置文件&#xff1a;静态 四、nmcli工具命令修改网络配置文件&#xff1a;动态 错误排查分析&#xff1a;编辑虚拟网络编辑器不生效 1、排除VMware启…

攻防世界---misc---gif

1、题目描述 2、下载附件&#xff0c;是一堆黑白图片&#xff0c;看到这里我一头雾水 3、看别人写的wp&#xff0c;说是白色表示0&#xff0c;黑色表示1。按照顺序写出来后得到 4、解码的时候&#xff0c;把逗号去掉。二进制转字符串得到&#xff1a; 5、 flag{FuN_giF}

24点 算法

这里写自定义目录标题 起因需求分析Python Code 起因 今天和孩子们一起玩24点&#xff0c; 发现有点玩不过。 想到可以用编程的方法写一个小程序来玩。 需求分析 需求输入输入1到13的数&#xff0c;这个可以用图像识别方案来做。 参考项目扑克牌识别 [https://blog.csdn.net…

阿里通义千问 Qwen2 大模型开源发布

阿里通义千问 Qwen2 大模型开源发布 Qwen2 系列模型是 Qwen1.5 系列模型的重大升级。该系列包括了五个不同尺寸的预训练和指令微调模型&#xff1a;Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B 以及 Qwen2-72B。 在中文和英文的基础上&#xff0c;Qwen2 系列的训练数…

C++11原子操作

目录 1.什么是原子操作 2.为什么需要原子操作&#xff1f; 3.C中的原子操作 4.原子操作使用及注意 5.应用场景 6.使用原子操作的最佳实践 7.原子操作与锁机制的比较 8.总结 1.什么是原子操作 原子操作是一种不可分割的操作&#xff0c;即在多线程环境中&#xff0c;这些…

Linux介绍-以CentOS和Ubuntu为例---linux入门01

Linux是一种广泛使用的开源操作系统&#xff0c;以其稳定性、安全性和灵活性而闻名。本文将详细介绍Linux操作系统&#xff0c;重点讨论CentOS和Ubuntu这两个常见的发行版&#xff0c;并比较它们的特点、适用场景以及在实际应用中的优劣。 01 Linux操作系统概述 1.1 Linux的起…

Docker面试整理-如果Docker容器无法启动,你会如何诊断和解决问题?

当 Docker 容器无法启动时,可以通过一系列步骤来诊断和解决问题。这些步骤有助于确定问题的根源并采取相应的解决措施。以下是处理 Docker 容器启动问题的一般流程: 1. 检查容器日志 命令:docker logs <container-id或container-name>此命令将显示容器的输出日志,可能…

深度学习与人工智能

深度学习&#xff0c;是一种特殊的人工智能&#xff0c;他与人工智能及机器学习的关系如下&#xff1a; 近些年来&#xff0c;基于人工神经网络的机器学习算法日益盛行起来&#xff0c;逐渐呈现出取代其他机器学习算法的态势&#xff0c;这主要的原因是因为人工神经网络中有一中…