Этот метод возвращает максимальную абсолютную разницу между элементами в одном array
. Он вычисляет разницу между всеми номерами в 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;
}
Является ли это назначением? Я уверен, что ты сможешь это сделать. Просто возьмите ручку и бумагу и попробуйте сделать это шаг за шагом. Задайте себе правильные вопросы. Это простая логика, больше ничего. –