有1千万个随机数,随机数的范围在1到1亿之间,将1到1亿之间没有在随机数中的数求出来
package _interview_question import java.util.* import kotlin.collections.ArrayList /** * 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来? * */ class Solution9 { fun getNumberInOneBillion(){ // val TenMillion = 10000000 // val OneBillion = 100000000 //for test val TenMillion = 10 val OneBillion = 20 val random = Random() val list = ArrayList<Int>() for (i in 1 .. TenMillion){//<-here is ten million list.add(random.nextInt(OneBillion))//<-here is one billion } val bitSet = BitSet(OneBillion) for (i in 1 .. TenMillion){ //sets the bit at the specified index to true bitSet.set(list.get(i-1)) } //println("range 0-one billion, the count of not including in random is:${bitSet.cardinality()})") //没有在随机数中的数字 for (i in 1 .. OneBillion){ if (!bitSet.get(i)){ println(i) } } println("===") //有在随机数中的数字 for (i in 1 .. OneBillion){ if (bitSet.get(i)){ println(i) } } } }