解题思路

数据范围比较小,去重排序工作可以直接开一个涵盖所有可能值大小的数组,初始化清零,读到了就进行判断,如果已经有标记了那么直接 continuecontinue ,没有标记就置 11count++count++ 记录下不重复的数据个数。 lastlast 用来存最大的数据,读入的时候就一直更新,取新读入和当前值中较大的值,一个小小的优化,不过本题数据范围比较小所以优化很有限。时间复杂度 O(n)O(n)

通过代码

#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;
}