现在的负载因子是多少
运行下面这段程序(8 格的表装了 4 条): print(4 / 8)
扩容之后有几格
一张 4 格的表装到第 4 条时超过了阈值,要扩成两倍。运行下面这段程序: cap = 4 cap = cap * 2 print(cap)
算一算挤不挤
补全 load:返回负载因子(已装条数 ÷ 总格子数)。 补全后输出 8 格表装 4 条时的负载因子。
挤到一定程度就得换个大房子
补全 maybe_grow:负载因子超过 0.75 就把容量扩成两倍,返回新容量;没超过就原样返回。 4 格的表装了 4 条,补全后输出新的容量。
⚠️ 换了房子,所有人都要重新算位置
rehash 不是把内容原样搬过去——格子数变了,每个键算出来的槽位也跟着变。 补全 rehash:把 4 格表里的人重新放进一张 8 格表。补全后输出 15 号在新表里坐第几格。
搬完之后一个都不能少
同一个 rehash。搬家最容易出的错是漏人。 补全后输出新表里非空的格子有几个,和搬之前对上。
一个够用的哈希表至少要有哪几样
手写一个够用的哈希表,至少要有【0】。
为什么说哈希表"平均"是 O(1)
哈希表的复杂度要加"平均"两个字,是因为【0】。
五个人占了几个格子
运行下面这段程序(链地址法,8 格): def new_table(cap): return [[] for _ in range(cap)] table = new_table(8) for key, name in [(17,
第一步:格子、哈希函数和插入
最终作品第一步:写出 HashMap,要有一排格子(每格挂一个列表)、一个 slot 方法和一个 put。 放完五个人之后输出第 7 格里有几个。