有效的字母异位词:
思路比较简单 由于范围比较小 只有小写字母为范围
利用26大小的数组 遍历字符串 第一个串在对应下标++ 第二个++
然后数据存在不为零就是不一样的 不存在则时字母异位词
返回数组的交集
由于要返回的是交集 就是查找两个集合出现的元素 想到要使用hash map
具体的数据结构而言 由于是简单的值查询 而且需要去重 所以使用unordered_set
需要先将第一个集合所有元素放进unordered_set 然后遍历第二个集合检查每一个元素是否在前一个unordered_set中出现
出现就放入一个result unordered_set 里进行存放
提交result时 要把它转换回vector 因为这个是vector类型的函数
写的过程中发现对这几个容器还不是很熟悉 需要看一下手册
找快乐数
与上面的类似
换成了一个数学背景
想到用hash map解决是因为它提到可能进入无限循环
那么利用unordered_set 进行去重 发现重复就退出
如果一直不重复 它应该就会落入题目所提的 1
这里还涉及了一个查找元素固定的写法 set.find(x) != set.end()
不是很理解
感谢群友的解惑
find函数没有找到对应的值,就会返回end()迭代器 !=就表示找到了
看手册只是简单提及这是个指向末尾的迭代器
两数之和
实际上题目的意思就是让我们找 nums[i+1] = target - nums[i]
而且还需要返回数组的下标
那么unordered_set就不是很好用了
需要利用map存储,key 和 value 分别存储值和下标
对于容器的一些写法还不是太熟悉
iter->second是用来取得key对应的value
存入map需要用pair()函数