码迷,mamicode.com
首页 > 编程语言 > 详细

[LeetCode] Intersection of Two Arrays 两个数组

时间:2016-05-19 01:22:37      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

 

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

Example:
Given nums1 = [1, 2, 2, 1]nums2 = [2, 2], return [2].

Note:

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

 

这道题让我们找两个数组相同的部分,难度不算大,我们可以用个set把nums1都放进去,然后遍历nums2的元素,如果在set中存在,说明是公共部分,加入结果的set中,最后再把结果转为vector的形式即可:

 

解法一:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        set<int> s(nums1.begin(), nums1.end()), res;
        for (auto a : nums2) {
            if (s.count(a)) res.insert(a);
        }
        return vector<int>(res.begin(), res.end());
    }
};

 

或者我们也可以使用STL的set_intersection函数来找出共同元素,很方便:

 

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        set<int> s1(nums1.begin(), nums1.end()), s2(nums2.begin(), nums2.end()), res;
        set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(res, res.begin()));
        return vector<int>(res.begin(), res.end());
    }
};

 

参考资料:

https://leetcode.com/discuss/103295/my-c-solutions-using-set-and-unordered_set

 

LeetCode All in One 题目讲解汇总(持续更新中...) 

[LeetCode] Intersection of Two Arrays 两个数组

标签:

原文地址:http://www.cnblogs.com/grandyang/p/5507129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!