我有一个问题,如何使此代码更高效?目前的结果是22。如何使用相同的方法获得22的相同结果。
public static int mystery(int[] a) {
int r = Math.abs(a[0]-a[1]);
for (int i = 0; i < a.length -1; i++) {
if (Math.abs(a[i]-a[i+1]) > r){
r = Math.abs(a[i]-a[i+1]);
}
}
return r;
}
public static void main(String args[]) {
int[] a = {1,3,-10,12,3,20}
System.out.println(mystery(a));
}
答案 0 :(得分:0)
我看到了两项改进,尽管总执行时间可能无关紧要。
第一个。在下面的代码中,我们从1
而不是0
开始for循环,并删除了a.length - 1
部分,我们还必须将其下面的a[i]-a[i+1]
部分更改为{{1 }}来处理我们新的数字范围。这样算术运算就少了一个。
a[i - 1] - a[i]
第二个,您两次调用public static int mystery() {
int[] a = { 1, 3, -10, 12, 3, 20 };
int r = Math.abs(a[0] - a[1]);
for (int i = 1; i < a.length; i++) {
if (Math.abs(a[i - 1] - a[i]) > r) {
r = Math.abs(a[i - 1] - a[i]);
}
}
return r;
}
,但是您也可以将其存储在变量中,然后使用它来比较和分配是否符合您的条件。下面是针对此代码,并结合了先前代码块中的改进。
Math.abs(a[i]-a[i+1])