Design a data structure that supports all following operations in average O(1) time.
- insert(val): Inserts an item val to the collection.
- remove(val): Removes an item val from the collection if present.
- getRandom: Returns a random element from current collection of elements. The probability of each element being returned is linearly related to the number of same value the collection contains.
Note
Duplicate elements are allowed.
Example
1 | // Init an empty collection. |
Code
1 | private Random random; |