class Solution {
public:
vector<int> intersect(vector<int>& n1, vector<int>& n2) {
sort(n1.begin(), n1.end());
sort(n2.begin(), n2.end());
vector<int> ans;
int n = n1.size();
int m = n2.size();
if(n < m)
{
for(int i = 0; i < n; i++)
{
int x = binarySearch(n2, n1[i]);
if(x != -1)
{
ans.push_back(n1[i]);
n2[x] = -1;
sort(n2.begin(), n2.end());
}
}
}
else
{
for(int i = 0; i < m; i++)
{
int x = binarySearch(n1, n2[i]);
if(x != -1)
{
ans.push_back(n2[i]);
n1[x] = -1;
sort(n1.begin(), n1.end());
}
}
}
return ans;
}
int binarySearch(vector<int> v, int k)
{
int i = 0, j = v.size() - 1;
while(i <= j)
{
int mid = (i + j) / 2;
if(v[mid] == k)
{
return mid;
}
else if(v[mid] < k)
{
i = mid + 1;
}
else
{
j = mid - 1;
}
}
return -1;
}
};