-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