本文主要是介绍【ETOJ P1012】排序去重问题 题解(集合),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个大小为 n n n 的数组 a a a,请将 a a a 中元素去重后从小到大排序输出。
输入格式
第一行一个整数 T T T 表示测试样例个数。 ( 1 ≤ T ≤ 100 ) (1≤T≤100) (1≤T≤100)
对于每一个测试样例:
- 第一行一个整数 n n n 表示数组大小。 ( 1 ≤ n ≤ 1 0 3 ) (1≤n≤10^3) (1≤n≤103)
- 第二行 n n n 个整数表示数组元素。 ( 1 ≤ a i ≤ 500 ) (1≤a_i≤500) (1≤ai≤500)
输出格式
对于每个样例,在一行输出结果后换行。
样例输入1
2
5
1 1 3 2 2
3
1 2 3
样例输出1
1 2 3
1 2 3
思路
set容器的特性是所有元素都会自动排序,并且不包含重复的元素。
首先,通过cin >> t;
从输入中读取测试用例的数量。然后进入一个循环,每次循环开始时,都会清空set容器s1
,然后通过cin >> n;
读取每个测试用例中的元素数量。
接着,进入另一个循环,每次循环都会读取一个元素a
,并将其插入到set容器s1
中。由于set容器的特性,所有插入的元素都会自动排序,且不包含重复元素。
最后,通过一个范围for循环遍历set容器s1
,并将容器中的每个元素输出,实现了排序和去重的功能。在每个测试用例处理完之后,都会输出一个换行符,表示这个测试用例的结果已经输出完毕。
AC代码
#include <algorithm>
#include <iostream>
#include <set>
#define AUTHOR "HEX9CF"
using namespace std;int t, n;
set<int> s1;int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> t;while (t--) {s1.clear();cin >> n;while (n--) {int a;cin >> a;s1.insert(a);}for (auto &i : s1) {cout << i << " ";}cout << endl;}return 0;
}
这篇关于【ETOJ P1012】排序去重问题 题解(集合)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!