哈希表原理与实战
在算法设计与工程实践中,哈希表是处理'查找'与'统计'问题的核心数据结构。它通过键值对映射实现 O(1) 级别的平均时间复杂度查询。常用的容器包括 unordered_map、unordered_set 以及配合排序使用的 vector 等。下面结合几个经典题目,看看如何灵活运用哈希思想。
1. 两数之和
寻找数组中和为目标的两个数。利用哈希表存储已遍历元素的索引,边遍历边检查补数是否存在。

class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash;
for (int i = 0; i < nums.size(); i++) {
int x = target - nums[i];
if (hash.count(x)) return {hash[x], i};
hash[nums[i]] = i;
}
return {-1, -1};
}
};
2. 字母异位词判断
判断两个字符串是否互为变位词。可以使用定长数组模拟哈希表,记录字符出现次数的差值。







