Задать вопрос
NotNight
@NotNight

Как найти разность максимального и минимального значения внутри массива?

Не особо понимаю как реализовать, пустыми глазами смотрю и ничего не понимаю
Что именно я понимаю: т.е первым делом я должен пробегаться по массиву и находить индекс самого минимального и максимально значения и потом сохранять их в определенных переменных, верно ли?
Вроде мысль пробегает, что нужно использовать Math.abs(), для возвращения абсолютного значения

Результат который должен получится, меня ещё больше в ступор вводит.

Результат:
console.log(work([-10, -20, -40])); // -40 - (-10) = -30 => 30
console.log(work([10, 20, 30])); // 30 - 10 = 20
arr = [[-10, -20, -40], [10, 20, 30]];
makeWork(arr, work); // 30


П.С Прошу прощения за невнятное описание задачи, но там только написано Найти разность максимального и минимального значения внутри массива и результат, который должен получится.

И если будет такая возможность, можно без reduce и т.д. На данный момент пытаюсь понять основы с начало
Либо статью, чтоб глаза открылись, как можно реализовать эту задачу
  • Вопрос задан
  • 743 просмотра
Подписаться 1 Простой 8 комментариев
Решения вопроса 3
@Azperin
Дилетант
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Наверное, запутал этот пример с отрицательными:
console.log(work([-10, -20, -40])); // -40 - (-10) = -30 => 30

Тут переставили местами зачем-то max и min. Но с отрицательными значениями ничего особенного. Из максимального -10 вычитаем - минимальное -40:
-10 - (-40) == -10 + 40 == 30
Никаких if..else, Math.abs() и TensorFlow )

без reduce и т.д.
Тогда и без Math.max() / Math.min()

Один раз пройти по массиву. Сначала и max и min равны первому элементу.
Когда в массиве всего один элемент, так ведь и будет: он и наибольший и наименьший.

Идём по элементам массива. Очередной сравниваем с max. Если очередной больше, то обновляем max. Та же логика с min.

Этот способ и алгоритмически быстрее встроенных Math.max() + Math.min(),
т.к. решает обе задачи за 1 проход по массиву.
Ответ написан
@WAR_VIK
Сергей Соколов прав, можно сделать за один проход:
let arr = [2,1,3,5,2,7,1,4];
let min = arr[0], max = arr[0];
for(let i of arr) {
  if(min > i) min = i;
  if(max < i) max = i;
}
console.log('Result is: ' + (max-min));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы