不重复地输出数

GitHub跳转原题关系图返回列表

用集合去重后排序,输出严格递增的整数序列。

OJ: noi_openjudge

题目 ID: ch0111-08

难度:入门

标签:排序集合python

日期: 2026-07-30 23:01

题意

读入大量整数,按从小到大顺序输出每个不同整数一次。

思路

集合自动去重,sorted(numbers) 得到严格递增列表。最后使用 print(*...) 以单个空格分隔输出。

代码

Python代码

python
number_count = int(input())
numbers = {int(input()) for _ in range(number_count)}

print(*sorted(numbers))

C++代码

cpp
#include <bits/stdc++.h>
using namespace std;

int n;
int a[1000005];

int main(){
    scanf("%d",&n);
    int i;
    for (i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    sort(a+1,a+n+1);
    int pos = unique(a+1, a+n+1)-(a+1);
    for(i=1;i<=pos;i++)
        printf("%d ",a[i]);
    return 0;
}

复杂度

设不同整数有 mm 个,时间复杂度为 O(n+mlogm)O(n + m \log m),空间复杂度为 O(m)O(m)

总结

当只关心不同元素的有序集合时,setsorted 足够直接。