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