两类查找问题
查找有无
- 元素value是否存在 set集合
- 只存储key, key 不允许重复
查找对应关系
- 元素value 出现了几次 map字典
- 通常通过key-value表示,一个key出现了多少次
set 和map
- 通常语言的标准库中都内置set和map,被称为容器类
- 容器类:用来存储一组具有相同类型的数据,而不同的容器针对的数据会有不同的处理操作。
- 屏幕实现细节
常见操作
- insert
- find
- erase
- change(map)
例题使用
set的例子
给定两个数组nums,求两个数组的公共元素
input :nums1=[1,2,2,1] ,nums2 = [2,2]
output: [2]
limit:结果中的每一个元素只能出现一次
分析:由于每一个元素只能出现一次,出现的顺序是任意的,因此可以用set的集合来做
leetcode 349:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
{
set<int> record;
for(int i = 0; i <nums.size(); i++)
{
record.insert(nums1[i]);
}
//set<int>record(nums1.begin(),nums1.end());
set<int> resultSets;
for(int i = 0; i < record.size(); i++)
{
if(record.find(nums2[i]) != record.end())
{
resultSets.insert(nums2[i]);
}
}
vector<int> resultsVector;
for(set<int>::iterator iter =resultsSet.begin(); iter!= results.end(); iter++ )
{
resultsVector.push_back(*iter);
}
return resultVecor;
//return vector<int>(resultSet.begin(),resultSet.end());
}
总结
* set集合中通常用来存放key,而且出现次数只有一次
* set通常也用来表示查找元素
* 存储集合到set—在set中去查找—-查找的元素可以放在set中