LC每日一题|20240414 - 705. 设计哈希集合
不使用任何内建的哈希表库设计一个哈希集合(HashSet)。
实现
MyHashSet类:
void add(key)向哈希集合中插入值key。bool contains(key)返回哈希集合中是否存在这个值key。void remove(key)将给定值key从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。
提示:
0 <= key <= 106- 最多调用
104次add、remove和contains
题目级别: Easy
解题思路
我们知道,HashSet的底层是HashMap,而HashMap是基于 数组+链表 的,在此我们只需要简单的实现一下就可以了。
AC代码
class MyHashSet() {
val MOD = 1003
val array = Array<LinkedList<Int>>(MOD) { LinkedList() }
fun add(key: Int) {
if (!contains(key)) {
val hash = key % MOD
array[hash].add(key)
}
}
fun remove(key: Int) {
val hash = key % MOD
array[hash].remove(key)
}
fun contains(key: Int): Boolean {
val hash = key % MOD
return key in array[hash]
}
}
/**
* Your MyHashSet object will be instantiated and called as such:
* var obj = MyHashSet()
* obj.add(key)
* obj.remove(key)
* var param_3 = obj.contains(key)
*/