705. Design HashSet
Easy
Design a HashSet without using any built-in hash table libraries.
Implement MyHashSet
class:
void add(key)
Inserts the valuekey
into the HashSet.bool contains(key)
Returns whether the valuekey
exists in the HashSet or not.void remove(key)
Removes the valuekey
in the HashSet. Ifkey
does not exist in the HashSet, do nothing.
Example 1:
Input
["MyHashSet", "add", "add", "contains", "contains", "add", "contains", "remove", "contains"]
[[], [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
10^4
calls will be made toadd
,remove
, andcontains
.
class MyHashSet:
def __init__(self):
self.size = 10**4
self.arr = [None]*(self.size)
def hash(self, key):
return key % self.size
def add(self, key: int) -> None:
h = self.hash(key)
if self.arr[h] is None:
self.arr[h] = [key]
else:
self.arr[h].append(key)
def remove(self, key: int) -> None:
h = self.hash(key)
if self.arr[h] is not None:
while key in self.arr[h]:
self.arr[h].remove(key)
def contains(self, key: int) -> bool:
h = self.hash(key)
if self.arr[h] is not None:
return key in self.arr[h]
Last updated