数列去重复项
题目描述
有一个数列,数列长度为n(1<= n <=1000000),数列由小于等于1000000的正整数组成,但是数列里可能存在一些相同的数。求数列去掉重复项后按从小到大输出。
输入格式
输入就一个测试例子,一行数列,数字之间以空格隔开。
输出格式
输出一个新数列,即原数列去掉重复项后按从小到大排序的新数列,数字之间以空格隔开。
样例输入
1 1 2 2 3 4 5 5
样例输出
1 2 3 4 5
提示/说明
本题输入数据较大,请注意算法的时间复杂度。
思路:
初始化数组为0,用数组下标保存数列,出现过标为1,最后输出为1的数组下标即可,数据量多的话用scanf。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int a[1000005];
int main(){
int x;
while(scanf("%d", &x)!=EOF){
a[x] ++;
}
for(int i = 0; i <= 1000000; i++){
if(a[i]){
cout << i << " ";
}
}
}