在n个元素的数组中,找到差值为k的数字对去重后的个数。
输入:
第一行,n 和 k,n 表示数字个数,k 表示差值
第二行,n 个正整数
输出:
差值为 k 的数字对去重后的个数
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 7;
int a[N];
int main()
{
int n, k;
cin >> n >> k;
for(int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
n = unique(a, a + n) -a;//去重
int r = 0, ans = 0;
//双指针法
for(int l = 0; l < n; l++)//左端先固定(外层循环)
{
while(r < n && a[r] - a[l] < k)//右端扫描(内层循环)
{
r++;
}
if(a[r] - a[l] == k)
{
ans++;
}
}
cout << ans << endl;
return 0;
}