总时间限制:
1000ms
内存限制:
65536kB
-
描述
-
输入n个数,从小到大将它们输出,重复的数只输出一次。保证不同的数不超过500个。
输入
-
第一行是一个整数n。1 <= n <= 100000。
之后n行,每行一个整数。整数大小在int范围内。
输出
- 一行,从小到大不重复地输出这些数,相邻两个数之间用单个空格隔开。 样例输入
-
52 4 4 5 1
样例输出
-
1 2 4 5
大体的思路是遍历去重再排序,附上ac代码。
#include
<stdio.h>
int main ()
{
int n ,a [ 200001 ],i ,j ,f [ 200001 ]= { 0 } ,b [ 200001 ]= { 0 } ,t = 0 ,k = 0 ;
scanf ( "%d" ,&n );
for (i = 0 ;i <n ;i ++)
{
scanf ( "%d" ,&a [i ]);
}
for (i = 0 ;i <n ;i ++)
{
f [a [i ]]++;
if (f [a [i ]]== 1 )
b [k ++]=a [i ];
}
for (i = 0 ;i <k -1 ;i ++)
{
for (j = 0 ;j <k -1 -i ;j ++)
{
if (b [j ]>b [j +1 ])
{
t =b [j ];b [j ]=b [j +1 ];b [j +1 ]=t ;
}
}
}
for (i = 0 ;i <k ;i ++)
printf ( "%d " ,b [i ]);
return 0 ;
}
int main ()
{
int n ,a [ 200001 ],i ,j ,f [ 200001 ]= { 0 } ,b [ 200001 ]= { 0 } ,t = 0 ,k = 0 ;
scanf ( "%d" ,&n );
for (i = 0 ;i <n ;i ++)
{
scanf ( "%d" ,&a [i ]);
}
for (i = 0 ;i <n ;i ++)
{
f [a [i ]]++;
if (f [a [i ]]== 1 )
b [k ++]=a [i ];
}
for (i = 0 ;i <k -1 ;i ++)
{
for (j = 0 ;j <k -1 -i ;j ++)
{
if (b [j ]>b [j +1 ])
{
t =b [j ];b [j ]=b [j +1 ];b [j +1 ]=t ;
}
}
}
for (i = 0 ;i <k ;i ++)
printf ( "%d " ,b [i ]);
return 0 ;
}