-1
我在编码竞赛中为练习题编写了下面的代码,但是当我运行它时,我会随着时间的推移。主要罪魁祸首(我猜)是在O(n^2)中运行的双重循环。有没有什么办法可以优化这个代码?我已经尝试与memoization搞乱,但我无法弄清楚如何做到这一点。在阵列上优化双重迭代
for (i=n;i>0;i--){
int index = linearSearch(seq,i,n);
int height = bricks[index];
for (j=0;j<n;j++){
if (j != index){
if (bricks[j] >= height){
while(bricks[j]>=height){
bricks[j]--;
count++;
}
if(bricks[j] < 0){
printf("-1\n");
return 0;
}
}
}
}
bricks[index] = 0;
seq[index] = 0;
}
如果这是工作的代码,你应该把它而不是[codereview](https://codereview.stackexchange.com/)。但是在你做这件事之前**,请确保**写出你的代码的一个很好的解释**,例如**文件**。 –
这段代码*应该做什么*? –
快速浏览一下,有很多方法可以优化这段代码... –