哈希集合
哈希集合的主要使用场景:去重,其特性为:不会出现重复元素,可以在O(1)的时间增删元素,可以在O(1)的时间判断元素是否存在。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class MyHashSet:
def __init__(self, InitCap = 2):
# 使用 MyChainHashMap 作为底层数据结构
self.map = MyChainHashMap(InitCap)
# 随便创建一个值,作为 value 占位符
self.PRESENT = object()
def add(self, key):
# 向哈希表添加一个键值对
self.map.add(key, self.PRESENT)
def remove(self, key):
# 从哈希表中移除键 key
self.map.remove(key)
def contains(self, key):
# 判断哈希表中是否包含键 key
try:
self.map.get(key)
return True
except:
return False
def size(self):
return len(self.map.getKeys())
# 测试
if __name__ == '__main__':
my_set = MyHashSet()
my_set.add(1)
my_set.add(2)
print(my_set.contains(1)) # True
print(my_set.contains(3)) # False
my_set.remove(1)
print(my_set.contains(1)) # False
print(my_set.size()) # 1
This post is licensed under CC BY 4.0 by the author.