题目大意
给一个数组,计算出数组中一共有多少个不同的数。
题目解法
我们常规的使用数组去判别的话对于 a_i 他最大为 10^18,用数组的话会爆内存。因此我们可以使用数据结构中的 map 去存。由于数据量比较大,本题开到了 2.5 s,实测标程用 cin 输入也没超时。
参考代码
#include<bits/stdc++.h>
#define endl '\n'
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 998244353;
using namespace std;
map<ll, int> s;
int main() {
int n;
cin >> n;
int ans = 0;
for (int i = 1; i <= n; i++) {
ll x;
cin >> x;
if (!s[x]) { //如果没出现过,就加1,并且标记该数已经出现过了。
s[x] = 1;
ans++;
}
}
cout << ans;
return 0;
}