## DEV Community is a community of 901,019 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Wenqi Jiang

Posted on

# Description

Design a HashSet without using any built-in hash table libraries.

Implement `MyHashSet` class:

• `void add(key)` Inserts the value `key` into the HashSet.
• `bool contains(key)` Returns whether the value `key` exists in the HashSet or not.
• `void remove(key)` Removes the value `key` in the HashSet. If `key` does not exist in the HashSet, do nothing.

## Example 1:

``````Input
[[], [1], [2], [1], [3], [2], [2], [2], [2]]
Output
[null, null, null, true, false, null, true, null, false]

Explanation
MyHashSet myHashSet = new MyHashSet();
myHashSet.add(2);      // set = [1, 2]
myHashSet.contains(1); // return True
myHashSet.add(2);      // set = [1, 2]
myHashSet.contains(2); // return True
myHashSet.remove(2);   // set = [1]
myHashSet.contains(2); // return False, (already removed)
``````

## Constraints:

• `0 <= key <= 106`
• At most `104` calls will be made to `add``remove`, and `contains`.

# Solutions

## Solution 1

### Code

``````const int N = 113;
class MyHashSet {
private:
vector<int> mySet[N];
int find(int linkIndex, int target) {
for (int i = 0; i < link.size(); i++) {
if (link[i] == target) return i;
}
return -1;
}

public:
MyHashSet() {
}

int linkIndex = key % N;
}

void remove(int key) {
int linkIndex = key % N;
}

bool contains(int key) {
int linkIndex = key % N;
return index != -1;
}
};

/**
* Your MyHashSet object will be instantiated and called as such:
* MyHashSet* obj = new MyHashSet();