Функция, возвращающая массив без повторяющихся чисел

Пройдите входной список слева направо, запоминая уже встреченные значения в set. В результат добавляйте число только при первом появлении.

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

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

Пройдите входной список слева направо, запоминая уже встреченные значения в set. В результат добавляйте число только при первом появлении.

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

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

Условие

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

Пример входных данных:

input_numbers = [2, 5, 3, 2, 8, 5, 9]

Ожидаемый результат:

result = [2, 5, 3, 8, 9]

Ответ

Пройдите входной список слева направо, запоминая уже встреченные значения в set. В результат добавляйте число только при первом появлении.

def unique_numbers(numbers):
    seen = set()
    result = []
    for number in numbers:
        if number not in seen:
            seen.add(number)
            result.append(number)
    return result

Для примера результат — [2, 5, 3, 8, 9]. Исходный список не изменяется, порядок первых появлений сохраняется. Ожидаемое время O(n), память O(k), где k — число уникальных значений. Простое list(set(numbers)) не выражает требование сохранить исходный порядок.

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

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

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

Подробнее