**终端设备档位差异统计**

2026 华为OD机试真题 6月24日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

在进行手机、平板、穿戴等设备的系统调优时,会为不同设备采集一组性能与能耗综合档位值;为了分析产品矩阵中是否存在稳定的档位梯度,工程师需要统计所有 “档位差异恰好为指定值” 的档位组合数量。

给定一个整数数组 profiles,其中 profiles[i] 表示第 i 台终端设备的综合档位值;再给定一个非负整数 diff,表示目标档位差。

请你返回不同档位值组成的组合数量,使得两个档位值的绝对差等于 diff。

2026 华为OD机试真题 6月24日华为OD上机新系统考试真题 100 分题型

注意

  1. 只按档位值去重,不按设备下标计数。 例如 profiles=[1,1,3,3],diff=2 时,只能计为一组 (1,3)。
  2. 当 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 的组合数量。核心思想是:

  1. 去重处理:只按档位值去重,不按设备下标计数
  2. 特殊情况:当 diff=0 时,只有出现至少两次的档位才能形成组合
  3. 避免重复:遍历集合时只检查 vv+diff,避免 (v, v+diff) 和 (v+diff, v) 重复计数

算法步骤

  1. 将数组转为集合去重
  2. diff=0,统计出现次数 >= 2 的档位数量
  3. diff>0,遍历集合,检查 v+diff 是否也在集合中,统计满足条件的数量
  4. 返回统计结果

复杂度分析

  • 时间复杂度:O(n),只需遍历数组一次建立集合
  • 空间复杂度:O(n),最坏情况下集合
THE END