-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path349_Intersection_of_Two_Arrays.cpp
More file actions
48 lines (40 loc) · 1.13 KB
/
349_Intersection_of_Two_Arrays.cpp
File metadata and controls
48 lines (40 loc) · 1.13 KB
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
44
45
46
47
48
/*
Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must be unique and you may return the result in any order.
Example 1:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]
Example 2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
Explanation: [4,9] is also accepted.
Constraints:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
*/
// Brute Force O(nlog(n)) complexity
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
vector<int> ans;
int i =0 , j =0;
int last = -1;
while(i<nums1.size() && j< nums2.size()){
if(nums1[i]==nums2[j]){
if(last!=nums1[i]){
ans.push_back(nums1[i]);
last = nums1[i];
}
i++;j++;
}
else if(nums1[i]>nums2[j]){
j++;
}
else{
i++;
}
}
return ans;
}
};