2014-09-19 7 views
1

Так что это уникальный вопрос, и я был бы признателен за любую помощь.Расстояние между двумя точками массива Java?

Цель: Считать и вернуть целое число «расстояние» от минимального значения до максимального значения. Список не сортируется и не сортируется. Минимальное значение может быть до max или vise-verse. В списке {2, -5, -7, 8, 22, -10} ответ = 1 (расстояние от -10 до 22) В списке {2, -5, -7, 8, 22 , -6} ответ = 2 (расстояние от -7 до 22)

Благодарим за помощь.

+0

нет причин извините, вы можете добавить еще один, если, если вам нравится. – user3776356

+1

Мне кажется, что вам нужно определить индекс значений MIN и MAX. Затем просто вычтите один из другого. В этом случае у вас будет индекс 2 и индекс 4 для разброса 2 – durbnpoisn

+0

@durbnpoisn, мы еще не рассмотрели индекс ... либо он работает так же, как в java, как в python? – user3776356

ответ

6

Просто следить за соответствующий индекс:

double min = list[0]; 
int minIndex = 0; 
double max = list[0]; 
int maxIndex = 0; 
for (int i =1 ; i < list.length ; i++) { 
    if(min > list[i]){ 
     min = list[i]; 
     minIndex = i; 
    } 
    if(max < list[i]){ 
     max = list[i]; 
     maxIndex = i; 
    } 
} 
int res = Math.abs(minIndex - maxIndex); 
+0

Спасибо. имеет смысл – user3776356

+0

FYI - это предполагает, что элементы в списке уникальны (ОП не говорил так или иначе). Например, использование примера OP '{2, -5, -7, 8, 22, -6}' правильно дает 2. Однако добавление другого -7 элемента в начало списка изменяет вывод, который может или может быть нежелательным (опять же, не указывается). – splungebob

+0

Спасибо, что указали, что ... ваше предположение верно. В массиве нет дубликатов. – user3776356

2

Держите Indice, находя max и min:

int indMin = 0; 
int indMax = 0; 
double min = list[0]; 
double max = list[0]; 
for (int i =0; i<list.length;i++){ 
    if(min>list[i]){ 
     min=list[i]; 
     indMin = i; 
    } 
    if(max<list[i]){ 
     max = list[i]; 
     indMax = i; 
    } 
} 

int distance = Math.abs(indMax - indMin); 
+1

вам не нужно зацикливать дважды ... пожалуйста, объедините цикл в один ... – StackFlowed

+1

Это неправильно. Если массив '' {1, 2} '', то он вернет '' abs (1 - (-1)) = 2'' –

+0

@Jean Logeart Действительно, отредактирован – deKajoo

Смежные вопросы