题意:求两个集合的交集。
思路:用hash表实现O(1)的查找。
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
map<int, int> c;
std::map<int, int>::iterator it;
for(int i = 0; i < nums1.size(); ++ i) {
it = c.find(nums1[i]);
if(it == c.end()) c[nums1[i]] = 1;
else c[nums1[i]] ++;
}
vector<int> re;
for(int i = 0; i < nums2.size(); ++ i) {
it = c.find(nums2[i]);
if(it != c.end() && c[nums2[i]]) {
c[nums2[i]] --;
re.push_back(nums2[i]);
}
}
return re;
}
};

本文介绍了一种使用哈希表实现的高效算法来求解两个整数集合的交集问题。该方法通过先构建一个哈希表来存储第一个集合中的元素及其出现次数,然后遍历第二个集合并检查元素是否存在于哈希表中来找到共同元素。
925

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



