Исходная функция возвращает [2, 5], а не их сумму, и сортирует входной массив на месте. Если нужна именно сумма двух минимумов, её можно найти одним проходом.
Сумма двух самых маленьких элементов массива
Исходная функция возвращает [2, 5], а не их сумму, и сортирует входной массив на месте. Если нужна именно сумма двух минимумов, её можно найти одним проходом.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан массив, содержащий не менее четырёх положительных целых чисел. Требуется вывести два наименьших числа (их можно затем сложить).
function sumTwoMin(arr) {
return arr.sort((a, b) => a - b).slice(0, 2);
}
console.log(sumTwoMin([19, 5, 42, 2, 77]));
Ответ
Исходная функция возвращает [2, 5], а не их сумму, и сортирует входной массив на месте. Если нужна именно сумма двух минимумов, её можно найти одним проходом.
function sumTwoMin(array) {
let first = Infinity, second = Infinity;
for (const value of array) {
if (value < first) { second = first; first = value; }
else if (value < second) second = value;
}
return first + second;
}
Для примера ответ 7. Одинаковые минимальные значения учитываются как разные элементы. Условие гарантирует достаточную длину и положительные целые числа; для общего API эти свойства нужно валидировать. Если нужны именно два числа, верните [first, second]. Время O(n), память O(1), исходник не меняется.