输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
// 方法1 (采用哈希表 unordered_set) 用unordered_set是因为底层是哈希表查找元素的时间是O(1)
class solution{
public:
vector<int> intersection(vector<int> &nums1, vector<int> &nums2){
// 将数组的相关元素放在集合中,便于采用count()统计元素个数
unordered_set<int> vis;
for(int num : nums){
// 数据
vis.insert(num);
}
// 检查数据nums2是否在nums1出现过,
// 如果出现了,添加元素,并为了避免元素重复插入到结果中,更新并删除vis中相关元素
vector<int> res;
for(int num : nums){
if(vis.count(num)){
ans.push_back(num);
vis.erase(num);
}
}
return res;
}
};
本文深入探讨了C++中使用哈希表实现数组交集的高效算法,通过实例展示了如何利用unordered_set来快速查找并返回两个数组的共同元素。
575

被折叠的 条评论
为什么被折叠?



