350. Intersection of Two Arrays II
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;
    }
};
Comments (0)