题解 | #明明的随机数#
明明的随机数
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; } } }