Определить первую подходящую пару чисел с заданной суммой

Храните уже встреченные числа и ищите дополнение target − value. Первый пример ошибочен: 8 + 3 = 11, а пары с суммой 12 в нём вообще нет.

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

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

Храните уже встреченные числа и ищите дополнение target − value. Первый пример ошибочен: 8 + 3 = 11, а пары с суммой 12 в нём вообще нет.

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

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

Условие

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

Примеры Ввод: [8,5,3,5,6], 12 Вывод: [8, 3]

Ввод: [1,18,20,7,1], 2 Вывод: [1, 1]

Ответ

Храните уже встреченные числа и ищите дополнение target − value. Первый пример ошибочен: 8 + 3 = 11, а пары с суммой 12 в нём вообще нет.

Считаем первой пару с наиболее ранним вторым элементом:

def first_pair(numbers, target):
    seen = set()
    for value in numbers:
        complement = target - value
        if complement in seen:
            return [complement, value]
        seen.add(value)
    return None

Проверка выполняется до добавления, поэтому один элемент не используется дважды. Для [1, 18, 20, 7, 1] и суммы 2 результат [1, 1], а для первого массива и 12 — None. Ожидаемая сложность O(n), память O(n). Если «первая» означает лексикографически минимальную пару индексов, это нужно оговорить: порядок выбора может отличаться.

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

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

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

Подробнее