基站低能耗时段统计
2026 华为OD机试真题8月19日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
基站运维团队需要统计某区域基站的低能耗连续运行时段数目,以评估基站的节能优化效果。给定以下信息:
- 整数数组
power:power[i]表示该基站第 i 小时的能耗值(单位:千瓦时),power[i] >= 0,能耗不会为负; - 整数
target:低能耗阈值(单位:千瓦时),要求连续时段的总能耗不超过该阈值; - 整数
max_hour:最大统计时长(单位:小时),要求连续时段的时长不超过该值,且至少为 1 小时。
请你统计满足以下两个条件的连续运行时段(子数组)的数目:
- 连续时段的时长属于
[1,max_hour]; - 该时段内的总能耗
<= target。
补充说明:
1 <= power.length <= 10^50 <= power[i] <= 1000 <= target <= 10^71 <= max_hour < power.length- 所有能耗值非负
2026 华为OD机试真题8月19日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
输入描述
输入包含两行:
- 第一行:整数数组
power的表示形式,如[0,0,0]; - 第二行:两个整数
target和max_hour,以逗号分隔,如0,2。
输出描述
输出一个整数,表示满足条件的连续运行时段数目。
示例1
输入
[0,0,0]
0,2
输出
5
说明
- 长度 1 子数组:下标 0、1、2 处,共 3 个;
- 长度 2 子数组:下标区间
[0,1]、[1,2],共 2 个;- 总计:3+2=5 个。
示例2
输入
[3,1,2,4,1]
5,3
输出
8
说明
- 长度 1 子数组:每个单元素能耗均不超过 5,共 5 个;
- 长度 2 子数组:满足条件的有 3 个;
- 长度 3 子数组:满足条件的有 0 个;
- 总计:8 个。
示例3
输入
[5,4,3]
6,2
输出
3
说明
- 长度 1 子数组:能耗分别为 5、4、3,均 <=6,共 3 个;
- 长度 2 子数组:满足条件的有 0 个;
- 总计:3 个。
解题思路
核心思想
由于所有能耗值都是非负数,当右端点向右移动时,窗口总和不会减少。因此可以使用滑动窗口。
枚举左端点 left,维护最远右端点 right,使窗口 [left,right] 同时满足:
- 窗口长度不超过
max_hour - 窗口总和不超过
target
那么以 left 为起点的合法连续时段数量就是 right-left+1。
算法步骤
- 初始化
right=-1、sum=0、答案ans=0。 - 枚举左端点
left。 - 在长度和总能耗都满足限制时,不断右移
right。 - 若
right>=left,则将right-left+1累加到答案。 - 左端点右移前,从窗口总和中减去
power[left]。 - 枚举结束后输出答案。
复杂度分析
- 时间复杂度:
O(n),左右指针都最多移动n次。 - 空间复杂度:
O(1),除输入数组外只使用常数额
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/835
文章版权归作者所有,未经允许请勿转载。
THE END