-1
我想知道是否有方法來提高以下代碼的效率。 (或者,也許有更好的算法?)
提高Java代碼的效率
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int i = 0; i < t; i++){
int m = sc.nextInt(), n = sc.nextInt(), maxM = 0, maxN = 0;
for (int j = 0; j < m; j++){
int newMonster = sc.nextInt();
if (newMonster > maxM){
maxM = newMonster;
}
}
for (int j = 0; j < n; j++){
int newMonster = sc.nextInt();
if (newMonster > maxN){
maxN = newMonster;
}
}
System.out.println(maxM >= maxN? "Godzilla": "MechaGodzilla");
}
基本上,我在一堆數字閱讀,並希望找到最大。有關原始問題的更多詳細說明,請轉至
https://open.kattis.com/problems/armystrengthhard/
當前代碼需要超過1秒才能完成運行,但我不確定哪部分(讀取輸入或比較數字)需要更多時間。
需要用什麼輸入才能完成?你的鏈接或更大的鏈接的小樣本?要確定比較數字是否確實會影響性能,只需從2個循環中刪除2個ifs,看看它是否會改變處理時間。 – StephaneM
對不起,我不知道輸入。我只是提交給網上法官。前兩個測試用例非常小,所以我通過了它們。但我在第三個失敗了。因此,刪除if語句不會測試性能,因爲它不會通過前兩個小測試用例。 –
你可以通過一件事來提高性能:不要在你的循環中聲明任何變量。讀取你的鏈接可以有50 * 2 * 100000 = 10百萬整數讀取。你可以使用相同的變量而不是分配10百萬個int。 – StephaneM