letecode [349] - Intersection of Two Arrays

Given two arrays, write a function to compute their intersection.

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]

Note:

  • Each element in the result must be unique.
  • The result can be in any order.

题目大意

  给定两个数组,求他们的交集。

理  解:

  用set存放数组1不重复的元素。遍历数组2,若当前元素在集合set中,则放入交集,并从set中删除该元素。

代 码 C++:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        vector<int> res;
        if(nums1.size()==0 || nums2.size()==0) 
            return res;
        set<int> m_set;
        for(int v1:nums1){
            m_set.insert(v1);
        }
        for(int v2:nums2){
            if(m_set.find(v2)!=m_set.end()){
                res.push_back(v2);
                m_set.erase(v2);
            }
        }
        return res;
    }
};

运行结果:

  执行用时 :12 ms, 在所有 C++ 提交中击败了93.04%的用户

  内存消耗 :9.3 MB, 在所有 C++ 提交中击败了61.95%的用户
posted @ 2019-06-19 13:19  lpomeloz  阅读(85)  评论(0编辑  收藏  举报