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