解题思路
数据范围比较小,去重排序工作可以直接开一个涵盖所有可能值大小的数组,初始化清零,读到了就进行判断,如果已经有标记了那么直接 ,没有标记就置 , 记录下不重复的数据个数。 用来存最大的数据,读入的时候就一直更新,取新读入和当前值中较大的值,一个小小的优化,不过本题数据范围比较小所以优化很有限。时间复杂度 。
通过代码
#include<bits/stdc++.h>
using namespace std;
int n, ans = 0 ,last;
int a[1010];
int main()
{
cin >> n;
memset(a, 0, sizeof(a));
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
if (a[x] == 1)
continue;
else
{
a[x] = 1;
ans ++;
last = max(last, x);
}
}
cout << ans << endl;
for (int i = 1; i <= last; i++)
{
if(a[i] == 1)
{
cout << i << " ";
}
}
cout << endl;
return 0;
}