华为OD机试 - 查找接口成功率最优时间段 - 回溯(Java 2023 B卷 100分)

news2024/7/4 4:29:36

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

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

专栏导读

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

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

一、题目描述

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

二、输入描述

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

三、输出描述

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

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

四、解题思路

  1. 第一行输入minAverageLost;
  2. 第二行输入一个数组,逗号隔开;
  3. 进行非法判断,minAverageLost及数组中元素取值范围为0~100的整数;
  4. 通过java8 Stream表达式(简洁/方便/上档次)快速拆解输入行;
  5. 递归找出平均值小于等于minAverageLost的最长时间段,输出数组下标对,格式{beginIndex}-{endIndx}(下标从0开始);
    • 遍历数组;
    • 找出平均值小于等于minAverageLost的最长时间段,输出数组下标对;
  6. 如果未找到则直接返回NULL;

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest {
    // 找出平均值小于等于minAverageLost的最长时间段
    public static int minAverageLost = 0;
    // 是否找到平均失败率小于等于minAverageLost的最长时间段
    public static boolean flag = false;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 找出平均值小于等于minAverageLost的最长时间段
        minAverageLost = Integer.parseInt(sc.nextLine());
        // minAverageLost取值范围为0~100的整数
        if(minAverageLost > 100){
            System.out.println("minAverageLost取值范围为0~100的整数");
            return;
        }
        
        // 第二行为{数组},数组元素通过空格(” “)分隔
        int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

        dfs(0, arr);
        // 如果未找到则直接返回NULL
        if (!flag) {
            System.out.println("NULL");
        }
    }

	// 递归找出平均值小于等于minAverageLost的最长时间段,输出数组下标对,格式{beginIndex}-{endIndx}(下标从0开始)
    public static void dfs(int left, int arr[]) {
        // 一直到数组最后的
        if (left == arr.length){
            return;
        }

        int count = 0;
        double sum = 0.0;
        // 最右下角标
        int rightIndex = left;
        for (int i = left; i < arr.length; i++) {
            // 数组中元素取值范围为0~100的整数
            if(arr[i] < 0 || arr[i] > 100){
                System.out.println("数组中元素取值范围为0~100的整数");
                return;
            }
            sum += arr[i];
            count++;
            // 找出平均值小于等于minAverageLost的最长时间段,输出数组下标对
            if (sum / count <= minAverageLost) {
                rightIndex = i;
            }
        }
        if (rightIndex > left) {
            flag = true;
            System.out.print(left + "-" + rightIndex + " ");
            left = rightIndex;
        }
        dfs(left + 1, arr);
    }
}

六、效果展示

1、输入

4
1 3 5 7 9 7 5 3 1

2、输出

0-3 5-8

3、说明

1 3 5 7四个数的平均值是4,小于等于4,满足条件,输出0-3;
7 5 3 1四个数的平均值是4,小于等于4,满足条件,输出5-8;

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

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】

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

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

在这里插入图片描述

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

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

相关文章

【图书推荐 | 测试】—《测试设计思想》

前言 随着科技的不断发展&#xff0c;互联网的不断进步&#xff0c;日益出现了一种趋势&#xff1a;测试设计将成为一种跨领域的综合性工作&#xff0c;测试者将成为一种跨领域的通用型人才。由此清华大学出版社推出了一本名为《测试设计思想》的书籍&#xff0c;由知名专家周…

分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

文章目录 背景分析 问题来了比较一开始的情况解决方式 背景 之前有分析过一次类似问题&#xff0c;最终结论是在keyby之后&#xff0c;其中有一个key数量特别庞大&#xff0c;导致对应的subtask压力过大&#xff0c;进而使得整个job不再继续运作。在这个问题解决之后&#xff…

数据分析15——office中的Excel基础技术汇总

0、前言&#xff1a; 这部分总结就是总结每个基础技术的定义&#xff0c;在了解基础技术名称和定义后&#xff0c;方便对相关技术进行检索学习。笔记不会详细到所有操作都说明&#xff0c;但会把基础操作的名称及作用说明&#xff0c;可自行检索。本文对于大部分读者有以下作用…

火山引擎DataLeap:助力PICO落地数据流程规范,提升开发效率

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作为目前中国市场领跑的头部XR品牌之一&#xff0c;字节跳动旗下的PICO已经拥有了超百万客户。 过去一年&#xff0c;PICO在XR场景中不断建设和发力&#xff0c;为运…

更好的 3D 网格,从重建到生成式 AI

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 这些生成的 3D 模型通常提取为标准三角形网格。网格表示提供了许多好处&#xff0c;包括支持现有软件包、高级硬件加速和支持物理仿真。但是&#xff0c;并非所有网格都是平等的&#xff0c;这些优势只…

在南非发现地球上最古老冰川的证据

古老的冰川暗示着太古代地球在某些方面可能与我们所处的时代相似。 29 亿年前的地球可能有像阿根廷南部冰川国家公园的佩里托莫雷诺冰川这样的冰川。图片来源&#xff1a; Martin St-Amant/维基百科 《地球化学展望快报》上发表的一项 新研究报告称&#xff0c;早在 30 亿年前…

离心机使用操作说明(记录备忘)

关于离心机的使用步骤做一简单记录 1.配准 2.装载&#xff08;对称性放置&#xff09; 3.确认&#xff08;装载完毕之后确认&#xff0c;轻轻转动&#xff09; 4.盖锅盖 5.关闭主盖 6.设置参数 7.运行 开始加速之后 转速会持续增加至设定值&#xff0c;离心结束后&#xff0c…

Python functools module 的介绍与应用

Python functools module 的介绍与应用 functools module lru_cache from functools import lru_cache import timelru_cache(maxsizeNone) # 设置缓存大小为无限制 def my_function(x):for i in range(1000):x xfor j in range(100):x xreturn x# 第一次调用函数&#xff…

概念解析 | 群像素激光雷达

群像素激光雷达技术解析 注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:群像素激光雷达技术。 1. 背景介绍 激光雷达作为一种主动式激光探测技术,通过发射脉冲激光并接收其反射回波信号,来获取目标距离和其他信息,在军事侦察…

收支明细高效管理,轻松查看和统计时间段内的开销收支明细!

亲爱的用户们&#xff0c;您是否经常需要查看某一时间段内的所有开销和收支明细&#xff0c;并进行自动统计和分析&#xff1f;现在&#xff0c;我们为您带来一款智能财务管家&#xff0c;让您轻松管理财务&#xff01; 首先&#xff0c;我们要进入晨曦记账本主页面&#xff0…

【c语言】通讯录(动态版+文件+背景音乐)含源码

开饭了&#xff0c;之前写的通讯录&#xff0c;是否会有人觉得申请1000人的空间是不是有点用不上呀&#xff0c;怎么才能做到要多少申请多少个呢&#xff1f;&#xff1f;我们学完动态内存管理&#xff0c;和文件的相关操作&#xff0c;终于可以继续完善我们的通讯录了 船新版本…

Python异常处理:优雅应对错误与异常

文章目录 &#x1f340;引言&#x1f340;异常的概念&#x1f340; try-except块&#x1f340;多个except块&#x1f340;else块&#x1f340;finally块&#x1f340;异常类型&#x1f340;抛出异常&#x1f340;异常处理的最佳实践&#x1f340;异常处理的现实应用&#x1f34…

设计模式之代理模式(Proxy)的C++实现

1、代理模式的提出 在组件的开发过程中&#xff0c;有些对象由于某种原因&#xff08;比如对象创建的开销很大&#xff0c;或者对象的一些操作需要做安全控制&#xff0c;或者需要进程外的访问等&#xff09;&#xff0c;会使Client使用者在操作这类对象时可能会存在问题&…

k8s ingress

一、浅谈ingress &#xff08;ingress 是与service配合使用的&#xff09; Ingress能把Service&#xff08;Kubernetes的服务&#xff09;配置成外网能够访问的URL&#xff0c;流量负载均衡&#xff0c;及SSL&#xff0c;并提供域名访问的虚拟主机等&#xff0c;客户通过访问UR…

【C++学习手札】一文带你认识C++虚函数(内层剖析)

食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f340;本文前置知识&#xff1a; C初识继承 ♈️今日夜电波&#xff1a;No title —REOL 1:02 ━━━━━━️&#x1f49f;──────── 4:03 …

无涯教程-Perl - use函数

描述 此函数将MODULE导出的所有功能(或仅LIST引用的功能)导入当前包的名称空间。有效等效于- BEGIN { require "Module.pm"; Module->import(); }也用于在当前脚本上强加编译器指令(编译指示),尽管从本质上讲它们只是模块。 请注意,use语句在编译时进行判断。在…

【网络】网络层——IP协议

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 网络层中&#xff0c;IP协议首部和有效载荷组成的完整数据称为数据报。 IP协议 &#x1f349;TCP和IP的…

文件批量管理,如何将文件进行一一复制备份并删除原文件里的文件

您是否经常需要对大量的文件进行复制备份和删除操作&#xff1f;是时候拥有一款高效的文件批量管理工具了&#xff01;我们的一键批量管理软件为您提供了简单而强大的解决方案&#xff0c;让您轻松地进行文件复制备份并删除原文件&#xff0c;让存储空间得到高效整理&#xff0…

为什么浙大MBA项目提前批面试要控制优秀人数比例?

大家好&#xff01;时间来到八月份&#xff0c;不知道今年浙大MBA项目的提前批面试你是否已经申请参加过&#xff1f;从剩余批次来看&#xff0c;留给考生做选择的时间确实不是很多了&#xff0c;仅剩的几个批次中&#xff0c;只有杭州第五批目前时间上还算充裕&#xff0c;其余…

Talk | ACL‘23 杰出论文奖上海交通大学吴蔚琪:预训练语言模型对本体知识的记忆与理解

本期为TechBeat人工智能社区第523期线上Talk&#xff01; 北京时间8月17日(周四)20:00&#xff0c;上海交通大学硕士研究生—吴蔚琪的Talk已准时在TechBeat人工智能社区开播&#xff01; 她与大家分享的主题是: “预训练语言模型对本体知识的记忆与理解”&#xff0c;分享了预训…