-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathintersection-of-two-arrays-ii.cpp
43 lines (37 loc) · 1.26 KB
/
intersection-of-two-arrays-ii.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Solution {
public:
// 二刷,试了一下双指针,对应的是follow up1。
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
vector<int> res;
int i=0,j=0;
while(i<nums1.size() && j<nums2.size()){
if(nums1[i]==nums2[j]){
res.push_back(nums1[i]);
i++,j++;
}
else if(nums1[i]<nums2[j]){
i++;
}
else{
j++;
}
}
return res;
}
//本应该用双指针做(https://leetcode.com/problems/intersection-of-two-arrays-ii/discuss/82263/C++-hash-table-solution-and-sort-+-two-pointers-solution-with-time-and-space-complexity),但是我没有。
vector<int> intersect1(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int,int> um1;
vector<int> result;
for(const auto &num:nums1) um1[num]++;
for(const auto &num:nums2){
if(um1.find(num)!=um1.end()){
result.push_back(num);
um1[num]--;
if(um1[num]==0) um1.erase(num);
}
}
return result;
}
};