HDU 1412. unique函数去重ANDset去重
原题链接
简单
作者:
史一帆
,
2021-04-18 16:08:58
,
所有人可见
,
阅读 327
解法一
unique()函数将重复的元素放到vector的尾部 然后返回指向第一个重复元素的迭代器 再用erase函数擦除从这个元素到最后元素的所有的元素
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> C;
int n, m;
int t;
int main()
{
while (cin >> n >> m)
{
C.clear();
for (int i = 1; i <= m + n; i ++ )
{
cin >> t;
C.push_back(t);
}
sort(C.begin(), C.end());
C.erase(unique(C.begin(), C.end()), C.end());
for (int i = 0; i < C.size(); i ++ )
{
if (i != C.size() - 1) printf("%d ", C[i]);
else printf("%d\n", C[i]);
}
}
return 0;
}
解法二
利用set自带的去重功能
#include <iostream>
#include <set>
using namespace std;
int n, m;
set<int> st;
int main()
{
while (cin >> n >> m)
{
st.clear();
for (int i = 0; i < n + m; i ++ )
{
int x;
cin >> x;
st.insert(x);
}
int cnt = 0;
for (set<int>::iterator it = st.begin(); it != st.end(); it ++ )
{
cout << *it;
if (cnt != st.size() - 1) cout << ' ';
cnt ++;
}
cout << endl;
}
return 0;
}