和第三篇题解vector思路的代码基本一致,但后四个点WA,蒟蒻求调
代码如下
#include<bits/stdc++.h>
#define mod 30007
using namespace std;
int q,n,x;
bool opt;
struct node{
vector<int> l[mod],tmp;
bool vis[mod];
bool insert(int x){//加入哈希表
int Mod=x%mod;
for(int i=0;i<l[Mod].size();i++)
if(l[Mod][i]==x)
return 0;
l[Mod].push_back(x);
if(!vis[Mod]){
vis[Mod]=1;
tmp.push_back(Mod);
}
return 1;
}
void clear(){
for(int i=0;i<tmp.size();i++){
l[tmp[i]].clear();
vis[tmp[i]]=0;//清空
}
tmp.clear();
}
}Hash[2];
int main()
{
cin>>q;
while(q--){
Hash[0].clear();
Hash[1].clear();
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
opt=0;
if(x<0) x=-x,opt=1;//分正数和负数两个哈希表
if(Hash[opt].insert(x)){
if(opt) putchar('-');
printf("%d ",x);
}
}
cout<<endl;
}
return 0;
}