本文共 1965 字,大约阅读时间需要 6 分钟。
1.两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。输出结果中的每个元素一定是唯一的,可以不考虑输出结果的顺序。 考察知识点:哈希表class Solution { public: vector intersection(vector & nums1, vector & nums2) { vector v; sort(nums1.begin(),nums1.end()); sort(nums2.begin(),nums2.end()); set_intersection(nums1.begin(),nums1.end(),nums2.begin(),nums2.end(),back_inserter(v)); vector ::iterator vector_iterator; vector_iterator = unique(v.begin(),v.end()); if(vector_iterator != v.end()) { v.erase(vector_iterator,v.end()); } return v; }};
或者
class Solution { public: vector intersection(vector & nums1, vector & nums2) { vector v; unordered_set hash1,hash2; for(int i:nums1) hash1.insert(i); for(int i:nums2) { if(hash1.count(i)>0&&hash2.count(i)==0) v.push_back(i); hash2.insert(i); } return v; }};
2.两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致,可以不考虑输出结果的顺序。 考察知识点:哈希表class Solution { public: vector intersect(vector & nums1, vector & nums2) { vector v; sort(nums1.begin(),nums1.end()); sort(nums2.begin(),nums2.end()); set_intersection(nums1.begin(),nums1.end(),nums2.begin(),nums2.end(),back_inserter(v)); return v; }};
或者
class Solution { public: vector intersect(vector & nums1, vector & nums2) { vector v; unordered_mapmp; for(int i:nums1) ++mp[i]; for(int i:nums2) { if(mp[i]>0) { v.push_back(i); --mp[i]; } } return v; }};
转载地址:http://wvfgz.baihongyu.com/