题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
#include <cstdlib> #include <iostream> using namespace std; int main() { int n; int a[1000]; int b[1000]; while (cin >> n) { // 注意 while 处理多个 case for(int i=0;i<1000;i++) { b[i]=0; } for(int i=0;i<n;i++) { cin>>a[i]; } for(int j=0;j<n;j++) { if(b[a[j]]==0) b[a[j]]=1; } for(int p=1;p<=1000;p++) { if (b[p]==1) cout<<p<<endl; } } } // 64 位输出请用 printf("%lld")
这个解题方法不用排序也不用去重,对于提升变成能力没什么作用,只是思维上的开拓。用另一个数组b[1000]来表示0-1000中哪些数字出现过,哪些没有出现过,出现过置为1,没有出现过为0;如4出现过,b[4]=1;全部数字跑过一遍后再将b数组中值为1的序号输出。