代码随想录 day06 有效的字母异位词 返回数组的交集 找快乐数 两数之和

发布时间 2024-01-01 15:27:41作者: 又见鸣蜩

有效的字母异位词:

思路比较简单 由于范围比较小 只有小写字母为范围
利用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()函数