题目描述:
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。
输入格式:
输入包含两行:
第一行包含一个正整数n(1 <= n <= 200000),表示第二行序列中数字的个数;
第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于0、小于等于100,000。
输出格式:
输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。
样例输入:
5 10 12 93 12 75
样例输出:
10 12 93 75
提示:
hash表(布尔数组)的应用,用于记录当前的数有没有出现过。
时间限制: 1000ms
空间限制: 128MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long a[200001],b[200001]={0};
int main(){
long long n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
b[a[i]]++;
}
for(int i=0;i<n;i++){
if(b[a[i]]!=0){
b[a[i]]=0;
cout<<a[i]<<" ";
}
}
return 0;
}