Храните два текущих минимума и обновляйте их за один проход. Повторяющиеся значения считаются отдельными элементами, поэтому два одинаковых минимума допустимы.
Сложение двух наименьших положительных элементов массива
Храните два текущих минимума и обновляйте их за один проход. Повторяющиеся значения считаются отдельными элементами, поэтому два одинаковых минимума допустимы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разработайте функцию, принимающую массив, содержащий минимум четыре положительных целых числа, и возвращающую сумму двух самых маленьких элементов. В массиве гарантировано отсутствие отрицательных значений и дробных чисел.
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).