Предлагаю решить задачу вместе: без спешки, с объяснением каждой строки.
Задача
Убрать из списка повторы, сохранив порядок первого появления элементов.
Решение
def unique(arr: list) -> list:
seen = set()
result = []
for x in arr:
if x not in seen:
seen.add(x)
result.append(x)
return result
print(unique([1, 2, 2, 3, 1, 4]))
Как это работает
Множество seen отвечает за быструю проверку «встречался ли элемент», список result сохраняет порядок. Простое приведение к set() порядок бы не сохранило.
Пример работы
[1, 2, 3, 4]
Сложность
O(n) по времени и памяти.
Такой пример хорошо закрепляется практикой — перепишите решение руками и прогоните на своих тестах.
Читайте также:
работает · строки · времени · Множество · элемент · практикой · быструю · решение · отвечает · Решение · порядок · списка · руками · Убрать · seen.add(x · Задача · элементов · список · return · Такой · Предлагаю · объяснением · python · Сложность · работы · вместе · приведение
Comments
Join the discussionNo comments yet. Be the first to comment.
