380. Insert Delete GetRandom O(1)
题目大意
Implement the RandomizedSet class:
RandomizedSet()
Initializes the RandomizedSet object.bool insert(int val)
Inserts an item val into the set if not present. Returns true if the item was not present, false otherwise.bool remove(int val)
Removes an item val from the set if present. Returns true if the item was present, false otherwise.int getRandom()
Returns a random element from the current set of elements (it’s guaranteed that at least one element exists when this method is called). Each element must have the same probability of being returned.
You must implement the functions of the class such that each function works in average O(1) time complexity.
中文释义
实现 RandomizedSet 类:
RandomizedSet()
初始化 RandomizedSet 对象。bool insert(int val)
将一个元素val
插入集合中,如果不存在则插入。如果元素不存在返回 true,否则返回 false。bool remove(int val)
从集合中移除一个元素val
,如果存在则移除。如果元素存在返回 true,否则返回 false。int getRandom()
从当前集合中返回一个随机元素(保证调用这个方法时集合中至少有一个元素)。每个元素被返回的概率相同。
你必须实现类的函数,使得每个函数的平均时间复杂度为 O(1)。
Example
Example 1:
- Input:
["RandomizedSet", "insert", "remove", "insert", "getRandom", "remove", "insert", "getRandom"]
[[], [1], [2], [2], [], [1], [2], []]
- Output:
[null, true, false, true, 2, true, false, 2]
- Explanation:
- RandomizedSet randomizedSet = new RandomizedSet();
- randomizedSet.insert(1); // Inserts 1 to the set. Returns true as 1 was inserted successfully.
- randomizedSet.remove(2); // Returns false as 2 does not exist in the set.
- randomizedSet.insert(2); //