题目描述
给定一个大小为 的数组 ,请将 中元素去重后从小到大排序输出。
输入格式
第一行一个整数 表示测试样例个数。
对于每一个测试样例:
- 第一行一个整数 表示数组大小。
- 第二行 个整数表示数组元素。
输出格式
对于每个样例,在一行输出结果后换行。
样例输入1
2
5
1 1 3 2 2
3
1 2 3
样例输出1
1 2 3
1 2 3
思路
首先,从输入中读取了一系列的测试用例,每一个测试用例都包含一组整数。对于每一个测试用例,首先清空了储存整数的向量v1,然后读入了n个整数并存入v1。
接下来,使用了STL中的sort函数对v1进行了排序,然后又使用了unique函数去除了其中的重复元素。unique函数只能去除相邻的重复元素,因此在使用该函数前需要先进行排序。unique函数会返回一个迭代器,指向去重后的序列的末尾,然后使用erase函数删除这个位置之后的所有元素,完成去重操作。
最后,遍历了v1中的所有元素并输出,每个元素后面都加了一个空格。遍历完一次v1后,输出了一个换行符,表示这个测试用例的输出结束。
AC代码
#include <algorithm>
#include <iostream>
#include <vector>
#define AUTHOR "HEX9CF"
using namespace std;
int t, n;
vector<int> v1;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> t;
while (t--) {
v1.clear();
cin >> n;
while (n--) {
int a;
cin >> a;
v1.push_back(a);
}
sort(v1.begin(), v1.end());
v1.erase(unique(v1.begin(), v1.end()), v1.end());
for (auto &i : v1) {
cout << i << " ";
}
cout << endl;
}
return 0;
}