题解 | #明明的随机数#

明明的随机数

https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0

利用 std::set 可以很轻松解决这个问题,set作为集合它可以对添加的数据自动去重,而且依赖于红黑树的它内部是有序,我们也省去了排序的操作,最后直接遍历set,输出即可。

#include <iostream>
#include <set>
using namespace std;

int main() {
    std::set<int> arr;
    int len = 0;
    cin >> len;
    for (int i = 0,var = 0; i < len; i++) {
        cin >> var;
        arr.insert(var);
    }
    for (auto it : arr) {
        cout << it << endl;
    }
}

如果不使用 std::set 的话,根据题目的随机数的数值不是太大,可以使用标记数组来解决,定义一个 bool 数组,大小为随机数的最大值,默认值设为 false ,然后将随机数当成数组下标,将对应值设为 true 即可,遍历 bool 数组将值为 true 的下标打印出来就通过题目了

#include <iostream>
using namespace std;
const int MAX_VALUE = 1000;
int main() {
    bool markArray[MAX_VALUE+1]{false};
    int len = 0;
    cin >> len;
    for (int i = 0,var = 0; i < len; i++) {
        cin >> var;
        markArray[var] = true;
    }
    for (int i = 0; i < MAX_VALUE+1; i++) {
        if (markArray[i]) {
            cout << i << endl;
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务