观察一下数据范围,发现数组长度n≤100,因此我们可以枚举所有的时间段
外层循环枚举左端点,内层循环枚举右端点,遇到符合要求的,就判断长度是否是最长的,如果最长就更新manlen和res,如果不是最长,但是和最长的一样长,就把当前时间段添加到答案里面
总的时间复杂度为O(n2),完全不会超时
服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为 0 ~ 100 的整数,给定一个数值( minAverageLost )表示某个时间段内平均失败率容忍值,即下均失败率小于等于 minAverageLost ,找出数组中最长时间段,如果未找到则直接返回 NULL。
输入有两行内容,第一行为(minAverageLost),
第二行为(数组),数组元素通过空格(“ “)分隔,minAverageLost及数组中元素取值范围为 0−100的整数,数组元素的个数不会超过 100 个
找出平均值小于等于 minAverageLost 的最长时间段,输出数组下标对,格式($beginindex )-(endindx)(下标从 0 开始),如果同时存在多个最长时间段,则输出多个下标对与下标对之间使用空格(” ”)拼接,多个下标对按下标对从小到大排序。
输入
1
0 1 2 3 4
输出
0-2
说明:
A、输入解释: minAverageLost=1 ,数组[0,1,2,3,4]
B、前 3 个元素的平均值为 1 ,因此数组第一个至第三个数组下标,即 0 - 2
输入
2
0 0 100 2 2 99 0 2
输出
0-1 3-4 6-7
说明
A、输入解释: minAverageLost=2 ,数组[ 0,0,100,2,2,99,0,2]
B、通过计算小于等于 2 的最长时间段为:数组下标为 0 - 1 即[0,0],数组下标为3 - 4即[2,2],数组下标为 6 - 7,即[0,2], 这三个部分都满足平均值小于等 2 的要求,因此输出 0 - 1 3 - 4 6 -7