1 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
這個(gè)問題確實(shí)與溢出有關(guān)。
將檢查if (cnt > 1_000_000_000)移到 for 循環(huán)中。要求是:
如果經(jīng)過的汽車對數(shù)超過 1,000,000,000,則該函數(shù)應(yīng)返回 -1。
因此,一旦對數(shù)超過計(jì)數(shù),則停止。
所以,
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;
}
這是一個(gè)顯示失敗的測試用例:
@Test
public void testHalfEach() {
final int[] inp = new int[100_000];
final int exp = -1;
Arrays.fill(inp, 0, 50_000, 0);
Arrays.fill(inp, 50_000, 100_000, 1);
validate(inp, exp);
}
private void validate(int[] inp, int exp)
{
PassingCars prog = new PassingCars();
int ans = prog.solution(inp);
assertEquals(exp, ans);
}
更改檢查的位置將允許此測試通過。
添加回答
舉報(bào)