Search⌘ K
AI Features

Insert Delete GetRandom O(1)

Understand how to create a Random Set data structure that supports insertion, deletion, and random access in constant average time. This lesson helps you implement each operation efficiently to meet O(1) constraints, deepening your skills in custom data structures using JavaScript.

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 O(1)O(1) (on average) for each operation.

Constraints:

  • 231-2^{31} \leq data 231\leq 2^{31}
  • No more than 2×1052 \times 10^5 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)

1.

What is the output for the following series of commands?

Delete(20), Insert(20), Insert(20), GetRandom()
A.

FALSE, TRUE, TRUE, 20

B.

FALSE, TRUE, FALSE, 20

C.

TRUE, TRUE, TRUE, 20

D.

FALSE, FALSE, TRUE, 20


1 / 3

Figure it out!

We have a game for you to play. Rearrange the logical building blocks required to implement the Delete operation.

Sequence - Vertical
Drag and drop the cards to rearrange them in the correct sequence.

1
2
3
4
5

Try it yourself

Implement your solution in the following coding playground.

JavaScript
usercode > insert_delete_random.js
class RandomSet {
// Initialize your data structure here
constructor() {
}
// Inserts a value in the data structure
// Returns True if it did not already contain the specified element
insert(val) {
// Replace this placeholder return statement with your code
return false
}
// Removes a value from the data structure
// Returns True if it contained the specified element
delete(val) {
// Replace this placeholder return statement with your code
return false
}
// Choose an element at random from the data structure.
getRandom() {
// Replace this placeholder return statement with your code
return -1
}
}
export default RandomSet;
Insert Delete GetRandom O(1)