第一次CCF计算机软件能力认证A题- 相反数 知识点:哈希 简单独立完成

72 阅读1分钟

3197. 相反数 - AcWing题库

思想

我的思想是对于每个都取绝对值,然后统计一下所有数出现的次数,出现次数为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;
}