349. Intersection of Two Arrays(c++)

给两个数组,写一个函数来计算这两个数组的交集。

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]

注意:

  • 结果中的元素没有重复
  • 结果的顺序无所谓

class Solution {
public:
    vector intersection(vector& nums1, vector& nums2) {
        vector res;
        std::sort(nums1.begin(), nums1.end());//sort是c++,algorithm库里的方法
        std::sort(nums2.begin(), nums2.end());
        std::set_intersection(nums1.begin(), nums1.end(), nums2.begin(), nums2.end(),  insert_iterator>(res, res.begin()));//set_intersection求两个有序序列的交集,等价于下面的程序;insert_iterator插入迭代器,将元素插入容器
        set st(res.begin(), res.end());//通过vector构造set
        res.assign(st.begin(), st.end());//st向res赋值,这一句和上一句一起,是为了给res去重
        return res; 
    }
};

----------------------------------------------------------------------------------------------------------------------

template 
  OutputIterator set_intersection (InputIterator1 first1, InputIterator1 last1,
                                   InputIterator2 first2, InputIterator2 last2,
                                   OutputIterator result)
{
  while (first1!=last1 && first2!=last2)
  {
    if (*first1<*first2) ++first1;
    else if (*first2<*first1) ++first2;
    else {
      *result = *first1;
      ++result; ++first1; ++first2;
    }
  }
  return result;
}

 

 

你可能感兴趣的:(leetcode)