- Leetcode349
- 1.问题描述
- 2.解决方案
- 解法一:使用unordered_map
- 解法二:使用unordered_set
- 3.set等与数组哈希比较
nums1赋1,nums2如果在mp种出现过就变为-1,最后遍历一遍把-1的key加入结果集,也去冲了相当于!
class Solution {
public:
vector intersection(vector& nums1, vector& nums2) {
unordered_map mp;
for (auto item: nums1) {
mp[item]=1;
}
for (auto item: nums2) {
if(mp.find(item)!=mp.end()) mp[item]=-1;
}
vector ans;
for (auto item: mp) {
if(item.second==-1) ans.push_back(item.first);
}
return ans;
}
};
感觉使用unordered_set其中有和vector的转化等等,更加优雅一点!
class Solution1 {
public:
vector intersection(vector& nums1, vector& nums2) {
unordered_set result_set; //存放结果
unordered_set nums_set(nums1.begin(), nums1.end());
for (int num : nums2) {
//发现nums2的元素在nums_set里出现过就直接加入结果集,结果集还是去重的
if (nums_set.find(num) != nums_set.end()) {
result_set.insert(num);
}
}
return vector(result_set.begin(), result_set.end());
}
};



