我正在做编译任务。我目前正在过车任务-https://app.codility.com/programmers/lessons/5-prefix_sums/passing_cars/;
其中一项性能测试,我得到了“错误的答案,预期得到的-1794967296 -1”
(性能测试名称为“ large_big_answer 0..01..1,长度=〜100,000“)
其他测试都做得很好
我想知道如何纠正此错误
这是我的代码
class Solution {
public int solution(int[] A) {
int mul = 0;
int cnt = 0;
for(int i = 0 ; i<A.length ; i++){
if(A[i] == 0) mul++;
else cnt = cnt+mul;
}
if(cnt>1000000000) return -1;
return cnt;
}
}
答案 0 :(得分:2)
正如@Nicholas K指出的那样,该问题确实与溢出有关。
将<StackPanel>
<TextBox />
<TextBox />
<TextBox />
<local:SetTextService.Text>
<Binding Path="MyText" />
</local:SetTextService.Text>
</StackPanel>
的支票移到for循环中。要求是:
如果传递的对数,则函数应返回-1 汽车超过1,000,000,000。
这样,一旦对数超过计数,就停止。
所以
if (cnt > 1_000_000_000)
以下是显示失败的测试案例:
public int solution(int[] A) {
int mul = 0;
int cnt = 0;
for(int i = 0 ; i<A.length ; i++){
if(A[i] == 0) mul++;
else cnt = cnt+mul;
if(cnt>1000000000) return -1;
}
return cnt;
}
更改支票的位置将使此测试通过。