所以我正在解决编码挑战,我的代码在由于超时而导致大量输入的测试用例中失败。
我需要模拟“计数”次。 每个模拟将产生0到364个“大小”次的随机数 如果两个数字存储在同一个索引中,那么每个数字都应该被存储和计数,这意味着计数是'2'然后命中++ 返回与“计数”相关的命中百分比
public double calculate(int size, int count) {
// TODO -- add your code here
int Hits=0;
for(int j=1;j<=count;j++) { // number of simulation
int BirthDays[]=new int[365];
Random rnd = new Random();
rnd.setSeed(j);
for(int i=0;i<size;i++){ //number of people
int x=rnd.nextInt(365);
BirthDays[x]=BirthDays[x]+1;
if(BirthDays[x]>=2){
Hits++;
break;
}
}
}
return(((float)Hits/count)*100);
}
那么有什么方法可以减少时间复杂度? 数据结构可以改变,它不是数组所独有的。
答案 0 :(得分:0)
我立即看到的最大节省时间是将if switch? TRUE [ask patches[set pcolor [color] of closest-turtle]]
移出循环。您不需要每次都创建一个新实例,而且速度很慢。
Random rnd = new Random()