审题:
本题需要我们查找两个给定数组的无重复数据交集,并以数组的形式返回思路:
方法一:set
之前我们学习过unordered_set的使用,但是unordered_set是无序的,而这里我们的比对算法需要有序数据,所以这次我们使用set。
(1)先用set完成去重和升序排序
(2)利用迭代器控制循环
若两个数组当前数据相同,则为交集,将数据插入answer数组并++两个数组的迭代器
若不同,指向较小的数据的迭代器++
(3)返回answer
解题:
(1)利用set完成排序和去重
(2)比对过程
为什么是较小的数据迭代器++?
因为现在已经按照升序排序,若当前数据小于另一个数组的数据,那么它一定也小于另一个数组剩下的数据,所以它一定是差集,而不是交集,直接访问下一个元素即可
349. 两个数组的交集 - 力扣(LeetCode)
补充:
set:以一个特定的顺序存储唯一数据的容器特点:寻找特定的key效率低于unordered_set