# LeetCode 705. Design HashSet

## Description

https://leetcode.com/problems/design-hashset/

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(1); // set = [1] myHashSet.add(2); // set = [1, 2] myHashSet.contains(1); // return True myHashSet.contains(3); // return False, (not found) 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`.

Follow up: Could you solve the problem without using the built-in HashSet library?

## Explanation

In Python, we can implement with a list.

## Python Solution

``````class MyHashSet:

def __init__(self):
"""
"""
self.hash_set = []

def add(self, key: int) -> None:
if key not in self.hash_set:
self.hash_set.append(key)

def remove(self, key: int) -> None:
if key in self.hash_set:
self.hash_set.remove(key)

def contains(self, key: int) -> bool:
"""
Returns true if this set contains the specified element
"""
return key in self.hash_set

# Your MyHashSet object will be instantiated and called as such:
# obj = MyHashSet()