哈希
哈希类问题的核心是把“线性查找”降维成“常数时间查找”。在面试里,凡是出现去重、计数、映射、前缀状态匹配,都应该优先想一遍哈希表。它通常与数组、字符串、前缀和一起出现,是最常见的“空间换时间”模型。
识别信号
- 需要 判断元素是否存在、去重、计数
- 需要建立”值→下标”或”值→频次”的映射关系
- 出现”前缀状态是否出现过”(前缀和 + 哈希)
反例:如果需要有序遍历或范围查询,用 TreeMap/排序数组更合适。
怎么处理
- 先问自己:是不是需要快速判断某个状态是否出现过。
- 再判断
key存什么,value存什么,是值、下标、频次还是前缀状态。 - 如果题目反复查历史信息,优先考虑哈希,而不是每次重扫。
- 如果是工程问题,再补充冲突处理、负载因子、扩容这些底层点。
典型实例
| 专题 | 关键差异 | 先看什么 |
|---|---|---|
| 哈希表 | 覆盖 Key/Value 设计方法论、底层原理、常见陷阱 | key/value 设计三问 + HashMap 内部实现 |
看到什么就先想到这类
- 出现“去重、频次统计、元素配对”。
- 出现“某个状态之前是否出现过”。
- 出现“前缀和 + 某个差值是否存在”。