解题思路
本题要求统计不同档位值之间绝对差恰好为 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 时把只出现一次的值也算进去、未去重导致同一档位对被算多次。