Insert Delete GetRandom O(1)
Understand how to implement a Random Set data structure that supports Insert, Delete, and GetRandom operations efficiently in O(1) time. Learn the underlying logic and constraints to enable fast access, updates, and random retrieval from the set while handling edge cases.
We'll cover the following...
Statement
Implement a Random Set data structure that can perform the following operations:
- Constructor(): This initializes the Random Set object.
- Insert(): This function takes an integer, data, as its parameter and, if it does not already exist in the set, add it to the set, returning TRUE. If the integer already exists in the set, the function returns FALSE.
- Delete(): This function takes an integer, data, as its parameter and, if it exists in the set, removes it, returning TRUE. If the integer does not exist in the set, the function returns FALSE.
- GetRandom(): This function takes no parameters. It returns an integer chosen at random from the set.
Note: Your implementation should aim to have a running time of (on average) for each operation.
Constraints:
- data
- No more than calls will be made to the Insert(), Delete() and GetRandom() functions.
- There will be at least one element in the data structure when the GetRandom() function is called.
Examples
Understand the problem
Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:
Insert Delete GetRandom O(1)
What is the output for the following series of commands?
Delete(20), Insert(20), Insert(20), GetRandom()
FALSE, TRUE, TRUE, 20
FALSE, TRUE, FALSE, 20
TRUE, TRUE, TRUE, 20
FALSE, FALSE, TRUE, 20
Figure it out!
We have a game for you to play. Rearrange the logical building blocks required to implement the Delete operation.
Try it yourself
Implement your solution in the following coding playground.
import java.util.*;class RandomSet {// Initialize your data structure herepublic RandomSet() {// Write your code here}// Inserts a value to the dataset// Returns true if the dataset did not already contain the specified valuepublic boolean insert(int val) {// Replace this placeholder return statement with your codereturn false;}// Deletes a value from the dataset// Returns true if the dataset contained the specified valuepublic boolean delete(int val) {// Replace this placeholder return statement with your codereturn false;}// Get a random value from the datasetpublic int getRandomData() {// Replace this placeholder return statement with your codereturn -1;}}