349. Intersection of Two Arrays

原创 2016年06月02日 10:52:44

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.
使用unordered_set    Runtime: 132 ms

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> hs1;
        unordered_set<int> hs2;
        vector<int> vi;
        int len1=nums1.size();
        int len2=nums2.size();
        for(int i=0;i<len1;i++)
            hs1.insert(nums1[i]);
        for(int i=0;i<len2;i++)
            hs2.insert(nums2[i]); 
            
        for(auto it1=hs1.begin();it1!=hs1.end();it1++)
         for(auto it2=hs2.begin();it2!=hs2.end();it2++)
             if(*it1==*it2)
                vi.push_back(*it1);
        
        return vi;
        
    }
};


Runtime: 32 ms


class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> set1;
        int len2=nums2.size();
        for(int i=0;i<len2;i++)
            if(find(nums1.begin(),nums1.end(),nums2[i])!=nums1.end()) 
                set1.insert(nums2[i]);
        return vector<int> (set1.begin(),set1.end());
        
    }
};

Runtime: 8 ms

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        vector<int> vi;
        unordered_set<int> m(nums1.begin(),nums1.end());
        for(auto a:nums2)
            if(m.count(a))
            {
                vi.push_back(a);
                m.erase(a);
            }
        return vi;
    }
};


排序算法 Runtime: 16 ms

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        std::sort(nums1.begin(),nums1.end());
        std::sort(nums2.begin(),nums2.end());
        vector<int> res;
        int len1=nums1.size();
        int len2=nums2.size();
        int i=0,j=0;
        while(i<len1&&j<len2)
        {
            if(nums1[i]<nums2[j])
                i++;
            else if(nums1[i]>nums2[j])
                j++;
            else
            {
                if(res.empty()||res.back()!=nums1[i])
                    res.push_back(nums1[i]);
                i++;
                j++;
            }
        }
        return res;
    }
};







版权声明:更多请参考:http://blog.csdn.net/yangquanhui1991,我们一起每天进步一点点!

相关文章推荐

Leetcode 349. Intersection of Two Arrays 解题报告 Python Java

1 解题思想这道题就是说,求两个数组的交集,所以做法也很简单: 使用哈希Set存入第一个数组的值 遍历第二个数组,如果第二个的数在Set中出现,那么就是交集(与此同时,因为只能返回一个值,所以出现...
  • MebiuW
  • MebiuW
  • 2016-05-18 23:30
  • 4523

Leetcode 350. Intersection of Two Arrays II 数组交集2 解题报告

1 解题思想这道题和前两天的那个是一个系列的,只是那一个输出不能重复,而这一题重复了多少个,就输出多少个,所以先看下这个: Leetcode 349. Intersection of Two Arr...
  • MebiuW
  • MebiuW
  • 2016-05-24 11:11
  • 2948

Intersection of Two Arrays II两个数组交集(重要!)

https://leetcode.com/problems/intersection-of-two-arrays-ii/ Given two arrays, write a function ...

[leetcode] 349. Intersection of Two Arrays 解题报告

题目链接: https://leetcode.com/problems/intersection-of-two-arrays/ Given two arrays, write a function...

349. Intersection of Two Arrays

1.题目描述    Given two arrays, write a function to compute their intersection. Example:    Given num...

349. Intersection of Two Arrays I &&II (Java)

Given two arrays, write a function to compute their intersection.  Example:  Given nums1 = [1, 2, 2,...

[leetcode]: 349. Intersection of Two Arrays

1.题目描述Given two arrays, write a function to compute their intersection.Example: Given nums1 = [1, 2...

【数据绑定】如何在数据绑定表达式中应用自定义函数

数据绑定的形式为,其中数据绑定表达式常用的有两种形式:一个是直接绑定数据字段(如),另一个是间接绑定数据字段(如)。index.aspx  value=''   index.aspx.cs     p.....

349. Intersection of Two Arrays (set)

https://leetcode.com/problems/intersection-of-two-arrays/description/题目: 求集合的交集。第一种解法,直接用set集合。class...

349. Intersection of Two Arrays

Tags- binary search, hash table, two pointers, sort 方法一:sort+binary search 先对nums1、nums2从小到大排序,然后,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)