1. 为什么选择力扣HOT100作为算法入门
作为算法初学者,我最初面对力扣上千道题目时完全无从下手。直到发现HOT100这个精选题库,它就像一份经过市场检验的"必刷清单",收录了面试最高频的100道题目。这套题库最妙的地方在于——它将哈希表这类基础数据结构的使用场景浓缩成了几道经典例题。
哈希表(Hash Table)本质上是通过键值对存储数据的结构,能在平均O(1)时间复杂度完成数据查找。在力扣HOT100中,涉及哈希的题目虽然只有3道,却覆盖了三大典型应用场景:
- 两数之和(#1):展示如何用哈希优化暴力枚举
- 字母异位词分组(#49):演示哈希作为分类器的妙用
- 最长连续序列(#128):体现哈希对离散数据的处理优势
这三道题就像三个不同方向的坐标轴,勾勒出哈希表应用的立体空间。我建议初学者按这个顺序刷题,因为难度是递进的——从简单的数值匹配,到中等难度的字符串处理,最后到需要结合其他算法的综合应用。
提示:实际面试中,约30%的算法题会涉及哈希表的使用。掌握这三道题就能覆盖大多数基础场景。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 两数之和:哈希的启蒙教学
2.1 问题重述与暴力解法
题目要求:给定整数数组nums和目标值target,返回数组中两个数之和等于target的下标。假设每种输入只有一组解,且不能重复使用同一元素。
最直观的解法是双层循环暴力枚举:
python复制def twoSum(nums, target):
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
时间复杂度O(n²),空间复杂度O(1)。当数组长度超过10⁴时,这种解法在力扣上会超时。
2.2 哈希优化思路
观察暴力解法的内层循环——它本质上是在查找target - nums[i]这个值是否存在。而哈希表正是为快速查找而生的数据结构。我们可以:
- 创建一个空字典(Python的字典就是哈希表实现)
- 遍历数组时,先检查
target - num是否在字典中
