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

Храните два текущих минимума и обновляйте их за один проход. Повторяющиеся значения считаются отдельными элементами, поэтому два одинаковых минимума допустимы.

Короткий ответ

Что ответить на собеседовании

Храните два текущих минимума и обновляйте их за один проход. Повторяющиеся значения считаются отдельными элементами, поэтому два одинаковых минимума допустимы.

Подробный разбор

Ответ с пояснениями

Условие

Разработайте функцию, принимающую массив, содержащий минимум четыре положительных целых числа, и возвращающую сумму двух самых маленьких элементов. В массиве гарантировано отсутствие отрицательных значений и дробных чисел.

function sumTwoSmallestNumbers(values) {
    // реализация
}

Ответ

Храните два текущих минимума и обновляйте их за один проход. Повторяющиеся значения считаются отдельными элементами, поэтому два одинаковых минимума допустимы.

function sumTwoSmallestNumbers(values) {
  let first = Infinity, second = Infinity;
  for (const value of values) {
    if (value < first) { second = first; first = value; }
    else if (value < second) second = value;
  }
  return first + second;
}

Для [19,5,42,2,77] получится 7, для [2,2,3,4] — 4. Вход уже гарантирует положительные целые числа и достаточное количество элементов. Сортировать или изменять исходный массив не требуется; время O(n), дополнительная память O(1).

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

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

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

Подробнее