2.要说明一点,只要迭代器类型相同,set等容器都可以使用vector等容器的迭代器初始化
3.由于set的去重加排序特性,可以采用双指针对比法来解决交集和差集问题
4.交集问题:两个迭代器分别在两个set容器的开头相等尾插,否则谁小谁向前一步,只要有一个到达终点则遍历结束
5.差集问题:相等则共同向前一步,不相等则尾插小的并让小的向前一步,只要有一个到底终点则遍历结束,再将未进行遍历的部分进行尾插
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
set<int>a(nums1.begin(),nums1.end());
set<int>b(nums2.begin(),nums2.end());
set<int>::iterator p1=a.begin();
set<int>::iterator p2=b.begin();
vector<int>ret;
while(p1!=a.end()&&p2!=b.end())
{
if(*p1>*p2)
{
p2++;
}
else if(*p1<*p2)
{
p1++;
}
else{
ret.push_back(*p1);
p1++;
p2++;
}
}
return ret;
}
};