作用

存储

两大类:开放寻址法、拉链法

开放寻址法

N = 200003
null = 0x3f3f3f3f
h = [0x3f3f3f3f] * N
def find(x): # 返回的是哈希值,如果x已存在,则返回存在的位置,如果x不存在,则返回应该插入的位置
    k = x % N
    while h[k] != null and h[k] != x:
        k += 1
        if k == N:
            k = 0
    return k

拉链法

N =1000003
h = [-1] * N # 槽清空,空指针用-1表示
e= [0] * N
ne = [0] * N
idx = 0
def insert(x):
    k = x % N # k为哈希值
#头插入节点
    e[idx] = x
    ne[idx] = h[k]
    h[k] = idx
    idx += 1

def find(x):
    k = (x % N + N) % N
    i = h[k]
    while i != -1:
        if e[i] == x:
            return True
        i = ne[i]
    return False

字符串前缀哈希法

1. 思想

Untitled