Сумма двух самых маленьких элементов массива

Исходная функция возвращает [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), исходник не меняется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее