题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1184
1.排序+手动去重
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 110;
int n, a[N];
int cnt, res[N];
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++)
{
if (i == 1 || a[i] != a[i - 1])
{
res[++cnt] = a[i];
}
}
cout << cnt << endl;
for (int i = 1; i <= cnt; i++)
{
cout << res[i] << " ";
}
return 0;
}
2.排序+unique去重
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 110;
int n, a[N];
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
sort(a + 1, a + n + 1);
int cnt = unique(a + 1, a + n + 1) - a - 1;
cout << cnt << endl;
for (int i = 1; i <= cnt; i++)
{
cout << a[i] << " ";
}
return 0;
}
3.利用桶的思想
#include <iostream>
using namespace std;
int cnt;
bool bucket[1010];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
if (!bucket[x])
{
cnt++;
}
bucket[x] = true;
}
cout << cnt << endl;
for (int i = 1; i <= 1000; i++)
{
if (bucket[i])
{
cout << i << " ";
}
}
return 0;
}