我想知道是否有办法提高以下代码的效率。 (或者可能有更好的算法?)
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秒才能完成运行,但我不确定哪个部分(读取输入或比较数字)需要更多时间。
答案 0 :(得分:1)
我会使用CPU分析器来解决为什么花费这么多CPU,但是你的程序很可能花费大部分时间执行IO操作,即sc.nextInt()
或System.out.println
每个IO操作都比您正在进行的任何其他操作贵1到10K倍。