Найдите экстремумы одним проходом без сортировки и разворачивания большого массива в аргументы. Для пустого массива явно выберите поведение, например возврат null.
Нахождение наибольшего и наименьшего элемента в массиве
Найдите экстремумы одним проходом без сортировки и разворачивания большого массива в аргументы. Для пустого массива явно выберите поведение, например возврат null.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разработайте две отдельные функции. Первая должна принимать массив и возвращать в нём максимальное значение, вторая – аналогично, но возвращать минимальное значение.
Ответ
Найдите экстремумы одним проходом без сортировки и разворачивания большого массива в аргументы. Для пустого массива явно выберите поведение, например возврат null.
function maximum(numbers) {
if (!numbers.length) return null;
let result = numbers[0];
for (let i = 1; i < numbers.length; i++) if (numbers[i] > result) result = numbers[i];
return result;
}
function minimum(numbers) {
if (!numbers.length) return null;
let result = numbers[0];
for (let i = 1; i < numbers.length; i++) if (numbers[i] < result) result = numbers[i];
return result;
}
Контракт предполагает плотный массив чисел без NaN; его политику нужно задать отдельно. Старт с первого элемента корректен и для полностью отрицательного массива. Каждая функция имеет время O(n) и дополнительную память O(1).