所以我正在解决一个编码挑战,并且由于超时而导致大量输入的测试用例失败。有没有什么办法可以避免在java中嵌套的“for”循环
我需要做一个“计数”次的模拟。 每个模拟将产生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);
}
那么有什么办法可以减少时间复杂度?数据结构可以被改变,它并不是排他的数组。
@Jiri你不喜欢 '嗨'? –
@AdriaanKoster那实际上不是我,看修订历史。我不喜欢标题中的额外引号:) –
@TheBakker这会如何帮助? –