К плану подготовки

RandomizedSet за O(1)

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

Реализуйте структуру данных RandomizedSet, которая хранит уникальные целые числа и поддерживает три операции в среднем за O(1).

  • insert(val): добавляет val, если его еще нет, и возвращает True; если val уже есть, возвращает False.
  • remove(val): удаляет val, если он есть, и возвращает True; если val нет, возвращает False.
  • get_random(): возвращает случайный элемент из текущего множества. Каждый элемент должен выбираться с одинаковой вероятностью.

Можно использовать стандартный модуль random.

Сигнатура

class RandomizedSet:
    def __init__(self):
        ...

    def insert(self, val: int) -> bool:
        ...

    def remove(self, val: int) -> bool:
        ...

    def get_random(self) -> int:
        ...

Примеры

Пример 1

Вход:
self = ["RandomizedSet","insert","insert","remove","insert"]
arg2 = [[],[1],[1],[1],[2]]
Выход:[null,true,false,true,true]

Insert/remove без проверки случайного значения

Пример 2

Вход:
self = ["RandomizedSet","insert","insert","remove","remove","insert"]
arg2 = [[],[10],[20],[10],[10],[20]]
Выход:[null,true,true,true,false,false]

Удаление существующего и несуществующего значения

Пример 3

Вход:
self = ["RandomizedSet","insert","insert","remove","insert","remove"]
arg2 = [[],[5],[7],[5],[5],[7]]
Выход:[null,true,true,true,true,true]

Удаление из середины с возвратом значения обратно

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