用 set 去重后排序,输出不同随机数的个数和升序序列。
OJ: noi_openjudge
题目 ID: ch0110-09
难度:入门
标签:排序集合python
日期: 2026-07-30 23:01
题意
删除随机数中的重复值,再将剩余数字从小到大输出,并先输出不同数字的个数。
思路
set 会自动只保留每个整数的一份,sorted(set(...)) 再把无序集合转为升序列表。列表长度就是不同数字的个数。
代码
Python代码
python
input()
numbers = sorted(set(map(int, input().split())))
print(len(numbers))
print(*numbers)C++代码
cpp
#include <cstdio>
int n;
int cnt = 0;
int a[1200] = {0};
int main(){
int i,t;
scanf("%d",&n);
for (i=1;i<=n;i++){
scanf("%d",&t);
if( a[t] == 0){
cnt++;
a[t] = 1;
}
}
printf("%d\n",cnt);
for (i=1;i<=1000;i++){
if( a[i] == 1)
printf("%d ",i);
}
return 0;
}复杂度
去重平均时间为
总结
只需要“去重后再排序”时,sorted(set(values)) 是清楚且常用的组合。