这道题主要想法使用set

set容器的三个特点:

  • 元素不重复
  • 自动排序(默认从小到大)
  • 查找、插入都是 O(log n)
  • 不用 sort+unique+vector erase的原因也很显然 输出顺序不能改变

    直接用set stl的特性即可

    或者标记数组的写法

    b.count() 判断是否出现 0没出现过 1则出现过

    先判断是否存在 如果不存在则插入到 set中使用 b.insert进行插入

    值得注意的是不能直接遍历输出 因为set会自动从小到大排序

    说白了就是b的这个set进行判断是否出现过 没有就输出 有就跳过

    #include <iostream>
    #include <set>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        set<int> b;
        for (int i=0;i<n;i++) {
            int temp;
            cin>>temp;
            if (b.count(temp)==0) {
                cout <<temp<<" ";
                b.insert(temp);
            }
        }
        return 0;
    }