哈希判重:两数之和与异位词
一、面试常考点
1. 两数之和核心
遍历当前值 x 时查 target-x 是否已出现。
2. 异位词分组核心
把“字符频次签名”作为哈希键。
二、细节介绍
1. 两数之和
一遍哈希,时间 O(n)。
2. 异位词分组
排序字符串或 26 频次数组序列化为键。
三、示例代码
function twoSum(nums, target) {
const map = new Map()
for (let i = 0; i < nums.length; i++) {
const need = target - nums[i]
if (map.has(need)) return [map.get(need), i]
map.set(nums[i], i)
}
return []
}
四、常用应用场景
1. 快速匹配
索引反查、去重校验。
2. 文本归类
按签名聚类相似文本。