随机整数数组去重与排序

严正声明:本文系作者davidhopper原创,未经许可,不得转载。

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

Input Param

n 输入随机数的个数

inputArray

n个随机整数组成的数组

Return Value

OutputArray 输出处理后的随机整数

注意

测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

输入描述

输入多行,先输入随机整数的个数,再输入相应个数的整数

输出描述

返回多行,处理后的结果

示例1

输入

11
10
20
40
32
67
40
20
89
300
400
15

输出

10
15
20
32
40
67
89
300
400

答案一(纯C++风格):

#include <set>
#include <iostream>
#include <algorithm>

int main() {
    int num = 0;
    int temp = 0;
    while (std::cin >> num) {
        std::set<int> data;
        for (int i = 0; i < num; ++i) {
            std::cin >> temp;
            data.insert(temp);
        }
        for (auto iter = data.cbegin(); iter != data.cend(); ++iter) {
            std::cout << *iter << std::endl;
        }
    }
    
    return 0;
}

答案二(纯C++风格):

#include <vector>
#include <iostream>
#include <algorithm>

int main() {
    int num = 0;
    int temp = 0;
    while (std::cin >> num) { 
        std::vector<int> data;        
        for (int i = 0; i < num; ++i) {
            std::cin >> temp;
            data.emplace_back(temp);
        }
        
        std::sort(data.begin(), data.end());
        auto last = std::unique(data.begin(), data.end());
        for (auto iter = data.begin(); iter != last; ++iter) {
            std::cout << *iter << std::endl;
        }
    }
    return 0;
}

答案三(偏C风格):

#include <iostream>

int main() {
    const int MAX_NUM = 1001;
    int N, n;
    while (std::cin >> N) {
        int a[MAX_NUM] = { 0 };
        while (N--) {
            std::cin >> n;
            a[n]++;
        }
        for (int i = 0; i < MAX_NUM; i++)
            if (a[i] > 0)
                std::cout << i << std::endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值