哈希表
哈希表(散列表)是一种通过键值对映射来高效存储和查找数据的数据结构。其核心思想是使用一个哈希函数,将键(Key)转换为数组索引,从而直接定位对应的值,实现 O(1) 时间复杂度的增删改查。
特性:高效读写、基于哈希函数映射、处理哈希冲突(链地址法、开放寻址法)、空间换时间、无序性
1. 两数之和
给定整数数组 nums 和目标值 target,找出和为目标值的两个整数并返回下标。
- 使用字典存储值和对应的索引
class Solution(object):
def twoSum(self, nums, target):
num_map = {}
for index, num in enumerate(nums):
x = target - num
if x in num_map:
return [num_map[x], index]
num_map[num] = index
2. 字母异位词分组
将字符串数组中的字母异位词组合在一起。
- 生成特征键:为相似元素找唯一标识
- 方法:排序法、计数法
- 排序法:
key = ''.join(sorted(x))
class Solution(object):
def groupAnagrams(self, strs):
list1 = {}
for x in strs:
key = ''.join(sorted(x))
if key not in list1:
list1[key] = []
list1[key].append(x)
return list(list1.values())
3. 最长连续序列
在未排序整数数组中找出数字连续的最长序列长度。
- 转集合去重
- 遍历集合,若
num-1不存在则num为起点 - 从起点向后查找连续数字
- 维护最大长度

