一、题目
二、解析
不用想太复杂,用数组统计就好了。
三、代码
#include <iostream>
#include <cstring>
#include <cmath>
#define MX 20000
using namespace std;
int n;
//正数
int pos[MX];
//负数
int neg[MX];
int cnt = 0;
int main()
{
memset(pos, 0, sizeof(pos));
memset(neg, 0, sizeof(neg));
cin >> n;
for (int i = 0; i < n; i++) {
int d;
cin >> d;
if (d > 0)
pos[d] += 1;
else
neg[abs(d)] += 1;
}
for (int i = 0; i < MX; i++) {
if (pos[i] > 0 && neg[i] > 0)
cnt += 1;
}
cout << cnt << endl;
return 0;
}
输入:
5
1 2 3 -1 -2
输出:
2