Определение индекса первой пары соседних чисел, сумма цифр которых равна 8

Посчитайте суммы цифр соседних чисел и проверьте их сумму за один проход. Для [1,5,4,3,2,6] первый подходящий индекс равен 4: пара 2 и 6.

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

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

Посчитайте суммы цифр соседних чисел и проверьте их сумму за один проход. Для [1,5,4,3,2,6] первый подходящий индекс равен 4: пара 2 и 6.

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

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

Условие

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

const numbers = [1, 5, 4, 3, 2, 6]

Ответ

Посчитайте суммы цифр соседних чисел и проверьте их сумму за один проход. Для [1,5,4,3,2,6] первый подходящий индекс равен 4: пара 2 и 6.

function digitSum(value) {
  let n = Math.abs(value), sum = 0;
  do { sum += n % 10; n = Math.floor(n / 10); } while (n > 0);
  return sum;
}
function firstPair(numbers) {
  if (numbers.length < 2) return -1;
  let previous = digitSum(numbers[0]);
  for (let i = 1; i < numbers.length; i++) {
    const current = digitSum(numbers[i]);
    if (previous + current === 8) return i - 1;
    previous = current;
  }
  return -1;
}

Предполагаются безопасные целые Number; знак не считается цифрой. Каждое число обрабатывается один раз: O(n·d), где d — число цифр; при ограниченной разрядности это O(n), память O(1).

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

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

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

Подробнее