代码与动画 HASH TABLE · CHAINING
哈希表.
根据哈希值定位桶,使用链式结构处理冲突。
期望 O(1) / 最坏 O(n)hash(key) = key % 5演示最多 6 个键
原理与执行逻辑
用哈希函数把键映射到桶,再在桶内查找实际键。不同键可能映射到同一桶,当前实现通过桶内条目列表处理冲突。
执行步骤
- 用 key % 5 计算桶号。
- 写入时在桶内查找同键条目,存在则覆盖值,否则追加新条目。
- 查询时定位桶,再比较桶内实际键。
- 删除时移除同键条目,其他冲突条目保留。
关键理解
哈希值相同不代表键相同,必须在桶内二次比较。桶固定为五个,大量键集中到同一桶时,操作会退化为线性扫描。
简短示例
键 1 与 6 都映射到桶 1,可以同时保存;查询 6 时需跳过键 1,再找到键 6 的值。
代码与执行动画
STEP 0 / 0const buckets = [[], [{ key: 1, value: 12 }, { key: 6, value: 25 }], [{ key: 2, value: 38 }], [], []];hash(key) = key % 53 个键
当前数据正在操作已访问 / 命中标记 / 指针
0
当前结构
选择操作,观察对应代码和状态变化。
操作当前结构
下一次操作使用上次完成后的数据。重置结构恢复初始示例。
哈希表的操作规则
使用五个桶和链式冲突处理。相同键更新原值,不增加条目;固定桶数下大量冲突会退化为线性扫描。
对应题目与扩展练习
观察执行过程后,按题目约束调整输入、返回值与实现。链接打开官方题目页面。
- 对应题目706. 设计哈希映射打开题目
实现写入、覆盖、查询与删除,处理哈希冲突。
- 扩展练习1. 两数之和打开题目
使用哈希表保存已扫描数值及下标。