Вопрос проверяет умение правильно анализировать алгоритмы, не путая асимптотику с конкретной реализацией Python.
Сложность оценивают по количеству операций относительно размера входных данных. Сначала анализируют алгоритм, а не язык. Учитывают сложность базовых операций Python. Важны худший и средний случаи. Реальные замеры используют только как дополнение.
Корректная оценка сложности требует абстрагирования от конкретных значений и фокуса на росте затрат.
Перед перечислением важно зафиксировать: асимптотическая сложность описывает рост, а не точное время выполнения.
Определить входные параметры
размер списка
количество элементов
Разложить алгоритм на операции
циклы
вложенные вызовы
Оценить сложность базовых операций
доступ по индексу: O(1)
in для list: O(n)
in для set/dict: O(1) в среднем
Сложить доминирующие члены
отбросить константы
Рассмотреть худший случай
Смешивание времени выполнения и сложности
Игнорирование вложенных операций
Оценка по конкретным числам
Неверные предположения о встроенных структурах
for x in items:
if x in seen:
...
цикл: O(n)
проверка в set: O(1)
Итого: O(n)
Временную сложность Python-алгоритмов оценивают через анализ операций и структур данных, а не через замеры времени. Это ключевой навык для проектирования масштабируемых решений.