Вступить в клуб →
лёгкаявопросСложность и стоимость структур данных

Проверка вхождения: list против set на большом наборе

Есть два контейнера с одинаковым содержимым — 100 000 строк:

banned_list = [...]        # list из 100000 строк
banned_set = set(banned_list)

Для каждого из миллиона входящих логинов выполняется проверка login in banned_list либо login in banned_set. Как соотносятся средние стоимости одной проверки?

  • Обе O(1): оператор `in` реализован одинаково для любых контейнеров
  • Список O(1), множество O(log n): множество хранит элементы в отсортированном виде
  • Список O(n), множество O(1) в среднем: множество считает хеш и идёт сразу в нужную корзину
  • Список O(log n), множество O(1): список внутри использует двоичный поиск

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

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

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

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