不重复数字-unordered map
题目描述
题解
据说这道题加强了数据,卡普通哈希,多模数哈希,普通map,set
这时候就要祭出我们的大杀器-unordered map
定义和用法与普通map基本相同,只不过它的查询是O(1)的(它的实现就是哈希表),而普通map是O(logn)的,那么这道题就迎刃而解了
另:它还有个兄弟 unordered set(逃
代码实现
#include<bits/stdc++.h>
#include<tr1/unordered_map>
using namespace std;
int t,n;
tr1::unordered_map<long long,int>mp;
int read(){
int f=1,re=0;
char ch;
for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar());
if(ch=='-'){f=-1;ch=getchar();}
for(;isdigit(ch);ch=getchar()) re=(re<<3)+(re<<1)+ch-'0';
return re*f;
}
int main(){
t=read();
for(int cas=1;cas<=t;cas++){
n=read(),mp.clear();
for(int i=1;i<=n;i++){
int x=read();
if(mp.find(x)==mp.end()){
printf("%d ",x);
mp[x]=i;
}
}printf("\n");
}return 0;
}