**终端设备档位差异统计**
2026 华为OD机试真题 6月24日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
在进行手机、平板、穿戴等设备的系统调优时,会为不同设备采集一组性能与能耗综合档位值;为了分析产品矩阵中是否存在稳定的档位梯度,工程师需要统计所有 “档位差异恰好为指定值” 的档位组合数量。
给定一个整数数组 profiles,其中 profiles[i] 表示第 i 台终端设备的综合档位值;再给定一个非负整数 diff,表示目标档位差。
请你返回不同档位值组成的组合数量,使得两个档位值的绝对差等于 diff。
2026 华为OD机试真题 6月24日华为OD上机新系统考试真题 100 分题型
注意
- 只按档位值去重,不按设备下标计数。 例如 profiles=[1,1,3,3],diff=2 时,只能计为一组 (1,3)。
- 当 diff=0 时,只有某个档位值出现至少两次,才可以形成一组。
约束条件
- 1≤ profiles.size() ≤100000
- −2147483648≤ profiles[i] ≤2147483647
- 0≤diff≤2147483647
输入描述
-
一个整数数组 profiles,其中 profiles[i] 表示第 i 台终端设备的综合档位值-
-
一个非负整数 diff,表示目标档位差
输出描述
不同档位值组成的组合数量
示例1
输入
1,5,3,4,2
2
输出
3
说明
满足要求的不同档位组合为 (1,3)、(3,5)、(2,4),共 3 组。
示例2
输入
8,8,8,10,10,12
0
输出
2
说明
档位 8 和档位 10 都至少出现两次,可以分别形成一组差值为 0 的组合;档位 12 只出现一次,不能形成组合。
示例3
输入
-5,-3,-1,1
2
输出
3
说明
满足要求的组合为 (−5,−3)、(−3,−1)、(−1,1)。
解题思路
核心思想
统计数组中不同档位值之间的差值为 diff 的组合数量。核心思想是:
- 去重处理:只按档位值去重,不按设备下标计数
- 特殊情况:当
diff=0时,只有出现至少两次的档位才能形成组合 - 避免重复:遍历集合时只检查
v与v+diff,避免 (v, v+diff) 和 (v+diff, v) 重复计数
算法步骤
- 将数组转为集合去重
- 若
diff=0,统计出现次数 >= 2 的档位数量 - 若
diff>0,遍历集合,检查v+diff是否也在集合中,统计满足条件的数量 - 返回统计结果
复杂度分析
- 时间复杂度:O(n),只需遍历数组一次建立集合
- 空间复杂度:O(n),最坏情况下集合
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/673
文章版权归作者所有,未经允许请勿转载。
THE END