Intersections of Two Arrays
Leetcode 349
Description:
Given two arrays, write a function to compute their intersection.
Note: Each element in the result must be unique. The result can be in any order.
Example:
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].
Idea:
Method 1: sort first, then use the previous solution (Note: previous solution allow duplicates)
space O(1), time O(n lg n)
Method 2: use Hashtable to store nums1 elements, then loop through nums2
space O(n), time O(n)
Code:
class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> nums1_element;
        for(auto elem: nums1){
            nums1_element.insert(elem);
        }    
        vector<int> result;
        for(auto elem: nums2){
            auto iter = nums1_element.find(elem) ;
            if(iter != nums1_element.end()){
                result.push_back(elem);
                nums1_element.erase(iter);
            }
        }
        return result;
    }
};
变种:element in result may be the same.