要求:求交集
思路:哈希标或者排序双指针,磁盘读不完不能排序
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
if(nums1.size() > nums2.size()) return intersect(nums2, nums1);
map<int, int> m;
vector<int> res;
for(auto i : nums1) ++m[i];
for(auto i : nums2) if(m.count(i) && m[i]) --m[i], res.push_back(i);
return res;
}
};
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
vector<int> ans;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
int i=0,j=0;
int n1=nums1.size(),n2=nums2.size();
while(i<n1&&j<n2){
if(nums1[i]==nums2[j]){
ans.push_back(nums1[i]);
++i,++j;
}
else if(nums1[i]>nums2[j])++j;
else ++i;
}
return ans;
}
};