Вступить в клуб →
лёгкаявопросХеш-таблицы, словари и множества

Стоимость подсчёта частот: dict.get против сортировки списка

Нужно посчитать, сколько раз встречается каждое слово в списке из миллиона элементов. Два варианта:

# A
counts = {}
for w in words:
    counts[w] = counts.get(w, 0) + 1

# B
counts = {}
for w in set(words):
    counts[w] = words.count(w)

Как соотносятся их сложности по времени?

  • A — O(n), B — O(n·u), где u — число различных слов: `list.count` каждый раз проходит весь список
  • Оба O(n): `list.count` реализован на C и потому выполняется за константу
  • A — O(n log n) из-за хеширования каждого слова, B — O(n)
  • A — O(n), B — O(n log n): `set(words)` внутренне сортирует значения

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

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

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

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