看到题目我最先想到的是用STL里的set容器,该容器具有将插入的元素自动排序并且去重的功能。由于太简单我就没有写。
其次我想到可以使用sort和uinque函数解决,先将数字都放入vector中,使用sort排序,再使用uinque去重,需要注意。去重后不是说重复元素就被删除了。而是被放在了vector的末尾,所以还需要使用erase函数来将末尾的重复元素删除。
#include <bits/stdc++.h>
using namespace std;
int main() {
//用于关闭同步流提高输入输出效率
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//
vector<int> a;
int n = 0; cin >> n;
int tmp;
for (int i = 0; i < n; i++)
{
cin >> tmp;
a.push_back(tmp);
}
sort(a.begin(), a.end());//先排序
a.erase(unique(a.begin(), a.end()), a.end());//再去重
cout << a.size() << endl;
for (auto i : a)
{
cout << i << ' ';
}
return 0;
}