1.有效的字母异位词
哈希表:哈希表是根据关键码的值而直接进行访问的数据结构,数组就是一张哈希表
遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法
异位词:字母相同,顺序不同,相同也行
做法:统计字母出现的频率,将原数组中的每个元素都与’a‘做差值,能得到每个元素与’a‘的相对位置,在这个位置++
注意:多想想其中的哈希映射,有26个字母所以要26长度的数组,如果是1W的数字,那可能需要最少1W长度的数组,为了每个值都有一个映射
2.两个数组的交集
set
思路:把其中一个集合转化成哈希表,另一个去比较
unordered_set 可以去重
set.find()的用法,find在容器中找到的值是返回迭代器,找不到就返回迭代器end()
数组
出现过的元素在哈希表中值为1
3.两数之和
map
要点:为什么用数组的值(元素),作为key,考虑我们的目的是查找某个元素值是否出现过
为什么想到哈希表
为什么用map
map是用来做什么的,存放遍历过的元素
key和value存什么