Skip to main content

2006.差为绝对值为k的数对的数目

思路

由题意,找 |nums[i] - nums[j]| == k 的个数。也就是找 num[i] == nums[j] + knums[i] == nums[j] - k 的个数。因为一个 ii 可能会有对应多个 jj 的结果,所以只需要找出 nums[j] + knum[j] - k 的个数做累加即可。

代码

class Solution {
public:
int countKDifference(vector<int>& nums, int k) {
int m[105];
memset(m, 0, sizeof(m));
int ans = 0;

for (int i = 0; i < nums.size(); i++) {
int x, y;
if (nums[i] - k >= 1)
x = nums[i] - k, m[x]++;
if (nums[i] + k <= 100)
y = nums[i] + k, m[y]++;
}
for (int i = 0; i < nums.size(); i++) {
ans += m[nums[i]];
}
return ans / 2;
}
};