跳到主要内容

哈希表

知识点概述​

哈希表(Hash Table)是根据键(Key)直接访问值(Value)的数据结构。通过哈希函数将键映射到表中的位置来访问记录。

核心特性​

  • 快速查找:平均 O(1) 时间复杂度
  • 键值对存储:每个键对应一个值
  • 无序性:大多数实现不保证顺序
  • 唯一键:键必须唯一

时间复杂度​

操作平均最坏
查找O(1)O(n)
插入O(1)O(n)
删除O(1)O(n)

常见题型​

1. 查找与计数​

  • 两数之和
  • 统计字符频率
  • 数组交集

相关题目:

2. 去重​

  • 判断重复元素
  • 找出唯一元素

3. 映射关系​

  • 字符串映射
  • 索引映射

解题技巧​

技巧 1:空间换时间​

使用哈希表存储中间结果,将 O(n²) 优化到 O(n)。

# 示例:查找问题
hashmap = {}
for item in items:
if target - item in hashmap:
return True
hashmap[item] = True

技巧 2:计数器模式​

from collections import Counter

# 统计频率
counter = Counter(arr)

技巧 3:索引映射​

记录元素与索引的对应关系。

# 元素 -> 索引
index_map = {val: idx for idx, val in enumerate(arr)}

常用实现​

Python​

  • dict:基本字典
  • collections.defaultdict:带默认值的字典
  • collections.Counter:计数器

C++​

  • unordered_map:哈希表
  • unordered_set:哈希集合
  • map:有序映射(红黑树)

相关知识点​

题目列表​

简单:

中等:

  • 字母异位词分组
  • 最长连续序列
  • 和为 K 的子数组

注意事项​

  • 哈希冲突的处理
  • 选择合适的哈希函数
  • 空间复杂度权衡

算法可视化​

下面的播放器可以改输入后重跑:把数组换成你自己的, 逐步看每一帧的状态怎么变。平均 O(1) 的代价是什么:键的哈希冲突由 Python 的 dict 处理,而插入顺序被保留着 —— 所以词典那一行的顺序就是元素第一次出现的顺序。

算法可视化 · 哈希表:就地统计出现次数可改输入后重跑
加载评论中...