380. Insert Delete GetRandom O(1) 🎲

Difficulty: Medium - Tags: Design, Hash Table, Randomized

Description

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.

Examples

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:


Solution 💡

Use a hash map to store the elements and their indices in an array. This allows O(1) time complexity for insertion, deletion, and getting a random element.

Java

Time Complexity ⏳

  • insert operation: O(1)

  • remove operation: O(1)

  • getRandom operation: O(1)

Space Complexity 💾

  • The space complexity is O(n), where n is the number of elements in the set, due to the storage in the hash map and the list.

You can find the full Solution.java file here.

Last updated

Was this helpful?