最佳升级时间窗
2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷
华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)
题目描述
有一套系统需升级,为减小系统升级期间的影响,需根据系统过去一段时间内的每小时平均访问数据,来预测最佳升级时间窗。
现给长度为168(7*24)的整数数组,表示一个周期(假设从周一00:00到周日24:00)的每小时历史数据,最佳升级时间窗选择规则如下:
1:时间窗内累计用户访问量必须小于等于给定的容忍值。
2:时间窗必须是连续的x个小时,最大的x即为最佳升级时间窗,且不超过7*24.
3:时间窗允许跨周期,例如当前周期的第167小时到下一周期的第166小时,是一个长度为168的时间窗。
请计算最佳升级时间窗,并返回其开始时间和结束时间的数组下标。如果存在多个最佳升级时间窗,返回开始时间下标最小的一个
输入描述
第一行为整数n,表示给定的升级影响的容忍值,取值范围:[0, 2^31]。
第二行为7 * 24个整数,表示一个周期(7*24)的每个小时用户访问量,每个值的范围:[0, 2^31]。
输出描述
两个整数,分别表示所计算出的最佳升级时间窗的开始时间下标(包含)和结束时间下标(包含),不存在时返回 -1 -1 。
示例1
输入
6
1 2 3 4 5 6 7 8 9 10 11 12 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 12 11 10 9 8 7 6 5 4 3 2 1
输出
22 25
说明
最佳升级窗口为:2 1 1 2
解题思路
核心思想
本题要求在一个长度为 168(7天 x 24小时)的循环数组中,找到最长的连续子数组,使得其和不超过给定的容忍值。
- 滑动窗口(Sliding Window):
- 这是一个经典的滑动窗口问题。我们需要维护一个窗口
[left, right],使得窗口内的元素和sum小于等于容忍值tolerance。 - 为了处理“循环数组”和“跨周期”的问题,我们可以将原数组复制一份拼接到后面,形成一个长度为 336 的数组。这样,跨越末尾的窗口就变成了连续的窗口。
- 这是一个经典的滑动窗口问题。我们需要维护一个窗口
- 窗口
订阅专栏 解锁全文
&spm=1001.2101.3001.5002&articleId=158543296&d=1&t=3&u=cd8d880606894c758742c778ee2f1c21)
109

被折叠的 条评论
为什么被折叠?



