我在编码竞赛中为练习题编写了以下代码,但是当我运行它时,我会随着时间的推移而去。主要的罪魁祸首(我猜)是在O(n ^ 2)中运行的双循环。有没有办法优化这段代码?我已经尝试过搞乱记忆,但我无法弄清楚如何做到这一点。
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;
}
答案 0 :(得分:0)
我不确定发布的代码段的目标,但以下提议的代码可能有助于执行持续时间:
img