Java 数组中的元素

Java 数组中的元素,java,arrays,matrix,methods,Java,Arrays,Matrix,Methods,此方法返回一个数组中元素之间的最大绝对差。它计算数组中所有数字之间的差值,但我试图调整它以返回最大绝对差值的索引 例如: Array = [7, 19, 5, 10, 16, 8, 1, 19, 6, 13] Index = [0, 01, 2, 03, 04, 5, 6, 07, 8, 09] 在这个数组中,最大的绝对差异是18(=1-19),它发生在索引编号6 此外,如果存在多个相等差异,则该方法需要返回索引较高的一个。在上面的示例中,它将返回索引3,而不是0 Array =

此方法返回一个
数组中元素之间的最大绝对差。它计算
数组中所有数字之间的差值
,但我试图调整它以返回最大绝对差值的索引

例如:

Array = [7, 19, 5, 10, 16, 8, 1, 19, 6, 13] 
Index = [0, 01, 2, 03, 04, 5, 6, 07, 8, 09] 
在这个数组中,最大的绝对差异是
18
(=1-19),它发生在索引编号
6

此外,如果存在多个相等差异,则该方法需要返回索引较高的一个。在上面的示例中,它将返回索引
3
,而不是
0

    Array = [1, 19, 5, 1, 19]
    Index = [0, 01, 2, 3, 04]
这个问题有点复杂,我不知道怎么做。有人知道吗

public static int stepMaxDiff(int[] array){

        int diff = 0;
        int max = 0;

        if (array.length == 0){    // Checks for empty array and returns -1
            return -1;
        }

        for (int i = 0; i < array.length - 1; ++i){ // i is the element in the array

            if (i == array.length - 1){
                diff = Math.abs(array[i] - array[0]); 
                // Calculates the last element of the array minus the first one

            } else {
                diff = Math.abs(array[i] - array[i+1]);
                // Calculates the element i minus element [i+1]
            }   

            max = diff >= max ? diff : max;
        }

        return max;
    } 
公共静态int-stepMaxDiff(int[]数组){
int-diff=0;
int max=0;
if(array.length==0){//检查空数组并返回-1
返回-1;
}
对于(int i=0;i=max?diff:max;
}
返回最大值;
} 

您应该将
maxIndex
添加到
max
,并在每次更新
max
时存储它:

if (diff >= max) {
    max = diff;
    maxIndex = i;
}

您可以完全避免存储
max
,将其替换为
maxIndex
,但是您需要在每次迭代时重新计算
max
,这可能是次优的。

您应该将
maxIndex
添加到
max
,并在每次更新
max
时存储它:

if (diff >= max) {
    max = diff;
    maxIndex = i;
}

您可以完全避免存储
max
,将其替换为
maxIndex
,但是您需要在每次迭代中重新计算
max
,这可能是次优的。

这是一个赋值吗?我相信你能做到。拿一支笔和一张纸,试着一步一步地做。问自己正确的问题。这是简单的逻辑,没有别的。这是一个任务吗?我相信你能做到。拿一支笔和一张纸,试着一步一步地做。问自己正确的问题。这是简单的逻辑,没有别的。谢谢!此
if
语句有效,但并非适用于所有情况。例如,数组[4,18]需要返回1(因为是18-4),但它返回0。@Rods2292这是因为循环“环绕”错误。你应该把条件设置为
i这是真的!我没有注意到,
谢谢你!此
if
语句有效,但并非适用于所有情况。例如,数组[4,18]需要返回1(因为是18-4),但它返回0。@Rods2292这是因为循环“环绕”错误。你应该把条件设置为
i这是真的!我没有注意到,
I