我需要编写一个解决方案来检查每次迭代中的重复值(如生日)并返回其中包含重复值的迭代次数。如果找到一个重复,您可以停止当前迭代并启动下一个。
应该改变我的解决方案。应如何编写解决方案以解决此重复问题。
padding
答案 0 :(得分:0)
我会使用HashSet。这将允许持续访问以查看您是否已访问当前号码。如果已经访问过,则可以中断并增加计数,否则将其添加到哈希集并继续。
以下是您重写的代码,效率更高。
static int runSim(int thePeople, int theCount) {
int count = 0;
// Runs the Sim by Count
for(int i = 1; i <= theCount; i++) {
Hash<Integer> setOfGenNums = new HashSet<Integer>();
Random rand = new Random();
rand.setSeed(i);
for (int j = 0; j < thePeople; j++) {
int genN = rand.nextInt(365);
if(setOfGenNums.contains(genN)){
count++; break;
}
listOfGenNums.add(genN);
} // End People Loop
} //End Count Loop
return count;
}