- 思路一:创建数组,二重循环枚举遍历,将差值为k的数组对象存入set的pair中去重,最后输出set的size。---时间复杂度为O(n^2)
- 思路二: 用哈希表和计数器。 ---时间复杂度为O(n)
下面为思路二的解:
#include<iostream>
#include<unordered_set>
using namespace std;
int main()
{
int n,k,d,count = 0;
unordered_set<int> s;
cin >> n >> k;
for(int i = 0; i < n;i++)
{
cin >> d;
s.insert(d);
}
for(int d : s)
{
if(s.find(d + k) != s.end())
count ++;
}
cout << count << endl;
return 0;
}