Пройдите входной список слева направо, запоминая уже встреченные значения в 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)) не выражает требование сохранить исходный порядок.