Post

哈希集合

哈希集合的主要使用场景:去重,其特性为:不会出现重复元素,可以在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.