Duplicate Elements题目描述给你n 个数,祛除其中的重复的数,并保持第一次出现的数原有的相对顺序。比如{3,2,2,3,1} ,那么祛除重复元素以后为{3,2,1} 。
| ||||||
输入第一行是一个整数K ,K 表示样例的个数,不超过100。 输出每行输出一个样例的结果,每个整数之间用一个空格隔开。 | |
##ac代码
#include<stdio.h>
#include<stdlib.h>
typedef struct In
{
int sz;
int wz;
}In;
In a[11000]={0},b[11000]={0};
int cmp( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->sz != d->sz) return c->sz - d->sz;
else return c->wz - d->wz;
}
int cmp1( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->wz != d->wz) return c->wz - d->wz;
else return c->sz - d->sz;
}
int main()
{
int k;
scanf("%d",&k);
getchar();
while(k--)
{
int n;
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
{
scanf("%d",&a[i].sz);
getchar();
a[i].wz=i;
}
int m=0;
qsort(a,n,sizeof(a[0]),cmp);
b[m++]=a[0];
for(int i=1;i<n;i++)
{
if(a[i].sz!=a[i-1].sz) b[m++]=a[i];
}
qsort(b,m,sizeof(b[0]),cmp1);
for(int i=0;i<m;i++)
{
if(i==m-1)
{
printf("%d",b[i].sz);
break;
}
printf("%d ",b[i].sz);
}
printf("\n");
}
return 0;
}