思想
我的思想是对于每个都取绝对值,然后统计一下所有数出现的次数,出现次数为2的数说明原先是一对相反数:
#include<bits/stdc++.h>
using namespace std;
const int N=500;
int cnt;
int a[N];
map<int,int>mp;
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
mp[abs(a[i])]++;
}
for(auto& it:mp)
{
if(it.second==2)
{
cnt++;
}
}
cout<<cnt<<endl;
return 0;
}
手写哈希表
#include<bits/stdc++.h>
using namespace std;
const int N=1010; //每个数的绝对值不会超过1000
int haxi[N];
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
haxi[abs(x)]++;
}
int res=0;
for(int i=0;i<N;i++)
{
if(haxi[i]==2)res++;
}
cout<<res<<endl;
return 0;
}