本题要求统计不同档位值之间绝对差恰好为 diff 的组合数,与 LeetCode 532「K-diff Pairs in an Array」的区别在于:这里按值去重计数,且 diff = 0 时需该值至少出现两次。
diff = 0:用哈希表统计每个档位出现次数,出现次数 ≥2 的档位各贡献 1 组。diff > 0:将所有出现过的档位放入集合 seen。对每个 v,若 v + diff 也在 seen 中,则 (v, v+diff) 为一组;因只从小值向大值检查,每组只计一次。v + diff 可能溢出 int,比较时用 long long(C++/Java)或 Python 原生整数。常见假解:按下标两两配对(会重复计数)、diff = 0 时把只出现一次的值也算进去、未去重导致同一档位对被算多次。
在进行手机、平板、穿戴等设备的系统调优时,会为不同设备采集一组性能与能耗综合档位值;为了分析产品矩阵中是否存在稳定的档位梯度,工程师需要统计所有 “档位差异恰好为指定值” 的档位组合数量。
给定一个整数数组 profiles,其中 profiles[i] 表示第 i 台终端设备的综合档位值;再给定一个非负整数 diff,表示目标档位差。
请你返回不同档位值组成的组合数量,使得两个档位值的绝对差等于 diff。
输入
[1,5,3,4,2],2
输出
3
说明
满足要求的不同档位组合为 (1,3)、(3,5)、(2,4),共 3 组。
输入
[8,8,8,10,10,12],0
输出
2
说明
档位 8 和档位 10 都至少出现两次,可以分别形成一组差值为 0 的组合;档位 12 只出现一次,不能形成组合。
输入
[-5,-3,-1,1],2
输出
3
说明
满足要求的组合为 (−5,−3)、(−3,−1)、(−1,1)。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册