文章目录
- 0 效果
- 1 题目
- 2 思路
- 2.1 思路1
- 2.2 哈希
- 3 代码
- 3.1 思路1
- 3.2 思路2
0 效果
1 题目
2 思路
2.1 思路1
暴力枚举
2.2 哈希
数组(hash)统计向量中每个元素出现的个数,然后i从1到i+k<101
开始遍历,结果集等于累加hash[i]*hash[i+k]
的和。
3 代码
3.1 思路1
class Solution {
public:int countKDifference(vector<int>& nums, int k) {int n = nums.size();int ans = 0;for(int i = 0;i < n;i++){for(int j = i;j < n;j++){if(abs(nums[i] - nums[j]) == k) ans++;}}return ans;}
};
3.2 思路2
class Solution {
public:int countKDifference(vector<int>& nums, int k) {int hash[101];fill(hash, hash + 101, 0);for(int i = 0;i < nums.size(); i++){hash[nums[i]]++;}int ans = 0;for(int i = 1;i + k <= 100;i++){ans += hash[i]*hash[i + k];}return ans;}
};