Вступить в клуб →
лёгкаявопросСтек, очередь и куча

Очередь на обычном list: во что превращается pop(0) на 200 тысячах элементов

Коллега реализовал очередь на обычном списке и жалуется, что на 200 тысячах элементов код думает несколько секунд.

queue = list(range(200_000))
result = []
while queue:
    result.append(queue.pop(0))

Какая у этого цикла асимптотика по времени и почему?

  • O(n): каждый элемент попадает в result ровно один раз, значит работы линейно
  • O(n log n): pop(0) внутри переиндексирует список за логарифм
  • O(n^2): pop(0) удаляет из начала и сдвигает все оставшиеся элементы влево
  • O(n), но с большой константой: list и deque отличаются только константой

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела