0%

350. 两个数组的交集 II

350. 两个数组的交集 II

hash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
if(nums1.size() > nums2.size())
return intersect(nums2, nums1);
unordered_map<int, int> map;
for(auto& num : nums1)
++map[num];
vector<int> ret;
for(auto& num : nums2)
{
if(map[num] > 0)
{
--map[num];
ret.push_back(num);
}
}
return ret;
}
};
排序双指针
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
int pt1 = 0, pt2 = 0;
int length1 = nums1.size(), length2 = nums2.size();
vector<int> ret;
while(pt1 < length1 && pt2 < length2)
{
if(nums1[pt1] == nums2[pt2])
{
ret.push_back(nums2[pt2]);
++pt1;
++pt2;
}else if(nums1[pt1] < nums2[pt2])
++pt1;
else
++pt2;
}
return ret;
}
};