题目描述:
示例1:
输入
5 2
1 5 3 4 2
输出
3
示例2:
输入
6 2
1 5 3 3 4 2
输出
3
示例3:
输入
4 0
1 1 1 1
输出
1
代码:
#include<algorithm>
#include<iostream>
#include<iterator>
#include<vector>
#include<map>
using namespace std;
int FindNumPairSubOfK(vector<int> &vec,int k)
{
map<int,int> map1;//通过map单重映射关系保存之后满足条件的数对
sort(vec.begin(),vec.end());//排序后就只需要判断vec[i+1]-vec[i]是否等于K这一种情况
int len=vec.size();
for(int i=0;i<len-1;++i)
{
for(int j=i+1;j<len;j++)
{
if((abs(k)==vec[j]-vec[i]))
map1[vec[i]]=vec[j];
}
}
int count=0;
map<int,int>::iterator it=map1.begin();
for(;it!=map1.end();++it)
count++;
return count;
}
int main()
{
int n,k;
vector<int> vec;
cin>>n>>k;
for(int i=0;i<n;++i)
{
int a;
scanf("%d",&a);
vec.push_back(a);
}
cout<<FindNumPairSubOfK(vec,k)<<endl;
return 0;
}
示例: