代码随想录Day 06 有效的字母异位词 | 两个数组的交集 | 快乐数 |两数之和
有效的字母异位词
解题思路
创建一个大小为26的数组,每个数组代表着一个字母,通过统计两个字符串中字母的个数来得到最后的结果。统计方法为一加一减,在其中一个字符串中,每有一个字母存在,则在对应下标的数组加1,另外一个字符串就是
知识点
哈希,映射
心得
由于我对于哈希这类题目较为陌生,于是直接看题解,学习了这种类型的题目怎么做。
两个数组的交集
解题思路
跟有效的字母异位词的思路相似,只不过字母变成了数字
知识点
哈希,映射
心得
巩固了一下用数组作为哈希表解决问题的算法。
快乐数
解题思路
需要用到C++中unordered_set这个数据结构,其本质就是一个哈希表。我们不断地把数的每一位的平方和存进去,当有重复的时候就不是快乐数,如果和为1,就是快乐数。
知识点
set,哈希表
心得
熟悉一下set的用法,这个也是我的薄弱项。
两数之和
解题思路
由于是哈希表专项,所以这题我只考虑哈希表的解法,需要用到C++中map这个数据结构,其本质是一个红黑树。只需遍历整个数组,通过map来找寻第二个数。
知识点
map,哈希表
心得
熟悉一下map的用法,现在来看哈希表真的是个非常有用的工具,特别是查找一个数是否在一个集合中。
【二刷】 在使用unordered_map做这道题时,我们可以一个一个将数添加到map中去,随后利用一个iterator来判断是否在这个map里面