#include <iostream>
#include <cstdio>
using namespace std;
int n;
int a[105];
int b[105];
int read()
{
scanf("%d",&n);
for(int i=0;i<n;i++)//不能开一个变量大小的数组,但可以用for循环来控制使用多少空间
{
int x;
scanf("%d",&x)
a[i]=x;
}
}
void fun()
{
sort(a,a+n);
int sum=0;
for(int i=0;i<n-1;i++)//去重
{
if(a[i]!=a[i+1])
{
b[sum]=a[i];
sum++; //计数
}
}
if(a[n-2]!=a[n-1])
{
b[sum]=a[n-1];
cout<<sum+1<<endl;
for(int i=0;i<sum+1;i++)
printf("%d ",b[i]);
}
else
{
cout<<sum<<endl;
for(int i=0;i<sum;i++)
printf("%d ",b[i]);
}
}
int main()
{
read();
fun();
return 0;
}
另外一种算法是:再开一个新的数组b,每次从a数组中往b数组中拿元素时,都检查一遍b数组中是不是已经有了这个元素,如果已经有了,那么就不放进去了。但是这样的算法的复杂度为O(n^2),明显没有上述算法时间复杂度低。