Сложность добавления в словарь O(1) — это всегда так или есть ситуации, когда это не так?

Добавление в dict имеет ожидаемую амортизированную сложность O(1), но не гарантированное постоянное время каждого вызова. Расширение таблицы, коллизии и стоимость пользовательских hash/eq меняют затраты.

Короткий ответ

Что ответить на собеседовании

Добавление в dict имеет ожидаемую амортизированную сложность O(1), но не гарантированное постоянное время каждого вызова. Расширение таблицы, коллизии и стоимость пользовательских hash/eq меняют затраты.

Подробный разбор

Ответ с пояснениями

Добавление в dict имеет ожидаемую амортизированную сложность O(1), но не гарантированное постоянное время каждого вызова. Расширение таблицы, коллизии и стоимость пользовательских hash/eq меняют затраты.

При resize нужно перераспределить внутренние записи, что даёт дорогую отдельную операцию, распределяемую по последовательности вставок. Много одинаковых хешей заставляет выполнять дополнительные проверки равенства и может ухудшить поиск до линейного. Вычисление хеша сложного ключа тоже не обязательно O(1). Для обычных небольших ключей средняя модель полезна, но её нельзя выдавать за жёсткую гарантию задержки.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее