第三章 哈希表part01
2026.02.02 第六天
242 有效的字母异位词
大道至简,由于全是小写字母,并且只需要统计数量,因此使用数组实现即可,同时利用了数组的超高查询速度。
定义一个长度为26的数组,用来存放26个小写字母的数量
使用三个循环,第一个循环统计字符串s中存在的字符的数量,遇到了就在数组对应位置自增
第二个循环用来遍历t中出现的字符,出现就自减
第三个循环查找经过两遍处理的数组是否存在非零元素,存在说明两个字符串不是异位词。
349 两个数组的交集
本题的关键在于利用unordered_set进行去重
set、multiset和unordered_set中前两者使用红黑树实现,unordered_set则使用哈希表实现,因此unordered_set查询速度最快,同时unordered_set数值是不可重复的,天然带有去重功能。
创建两个unordered_set,第一个用来遍历数组1记录数组1中出现过的元素,第二个在发现数组2中存在数组1的重复元素时记录交集中的元素,最后利用vector的构造函数返回数组即可。
202 快乐数
关键在于题目中的“无限循环”四个字,要判断是否陷入无限循环,也就是此数不是快乐数,就需要判断当前迭代得到的元素之前是否出现过,自然想到使用unordered_set
每迭代一次判断是否符合等于1,是则认定是快乐数,不是的话将迭代得到的值插入set中,进行下一轮迭代。
1 两数之和
梦开始的地方~
本题首先要想到用target减去当前遍历元素得到期望的值,而后进行查找,这样就想到利用哈希相关数据结构,然后本题不仅涉及了要查找的数,还要返回下标,此时想到使用map。
使用for循环进行遍历,每次得到期望的数值就在map中进行查找,找到则返回下标,成功解决,否则将此元素插入map,继续查找。



浙公网安备 33010602011771号