2006.差为绝对值为k的数对的数目
思路
由题意,找 |nums[i] - nums[j]| == k
的个数。也就是找 num[i] == nums[j] + k
和 nums[i] == nums[j] - k
的个数。因为一个 可能会有对应多个 的结果,所以只需要找出 nums[j] + k
和 num[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;
}
};