题目链接
题意要求就是去重,并且输出顺序不改变,只保留第一次出现的元素。
set和map都可实现(map内部会自动排序,所以需要边存入map,判断是否是第二个及以上出现的元素,随即输出)
/*set*/
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
int t,n;
int a[100000];
int main(){
cin>>t;
while(t--){
cin>>n;
set<int> se;
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<a[0];
se.insert(a[0]);
for(int i=1;i<n;i++){
if(!se.count(a[i])){
cout<<" "<<a[i];
se.insert(a[i]);
}
}
cout<<endl;
}
return 0;
}
#include<stdio.h>
/*map*/
#include<map>
#include<iostream>
using namespace std;
int main()
{
map<int,int> ma;
int t,n,m;
scanf("%d",&t);
while(t--)
{
ma.clear();
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&m);
// ma.insert(m);
ma[m]++;
if(ma[m]==1)
{if(i==1)
printf("%d",m);
else printf(" %d",m);
}
}
printf("\n");
}
return 0;
}