К задачам

Множество с O(1) add, delete и getRandom

СредняяАлгоритмы
Лучше работает на десктопе
Хеш-таблицаМассивСлучайностьПроектирование

Реализуйте структуру данных RandomizedSet, которая хранит уникальные целые числа и поддерживает операции:

  • add(value): добавить значение, если его еще нет;
  • delete(value): удалить значение, если оно есть;
  • get_random(): вернуть случайный текущий элемент.

Все операции должны работать за O(1) в среднем.

Интерфейс

class RandomizedSet:
    def add(self, value: int) -> None:
        ...

    def delete(self, value: int) -> None:
        ...

    def get_random(self) -> int:
        ...
get_random не вызывается на пустой структуре.

Примеры

Пример 1

Вход:
self = [["add",10],["add",20],["delete",10],["get_random",null]]
Выход:[null,null,null,20]

После удаления 10 остается только 20

Пример 2

Вход:
self = [["add",1],["add",1],["add",2],["delete",3],["delete",1],["get_random",null]]
Выход:[null,null,null,null,null,2]

Повторное добавление и удаление отсутствующего элемента не ломают структуру

Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
05:00
Консоль
Нажмите кнопку запуска или Ctrl+Enter
Множество с O(1) add, delete и getRandom — Алгоритмы задача — ML Mentor