优化Java数组方法

时间:2018-11-01 20:59:42

标签: java arrays

我有一个问题,如何使此代码更高效?目前的结果是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));
}

1 个答案:

答案 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])