349. Intersection of Two Arrays不重复的记录两个数组中共同的数字

来源:互联网 发布:软件测试各个阶段 编辑:程序博客网 时间:2024/05/16 09:26

计算两个数组中共同的数字,不能重复
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.

//解法1;将两个数组分别进行排序,用两个指针分别对其进行遍历——时间长class Solution {public:    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {        vector<int> result;        if(nums1.size()==0||nums2.size()==0) return result;        sort(nums1.begin(),nums1.end());        sort(nums2.begin(),nums2.end());        int i=0,j=0;        while(i<nums1.size()&&j<nums2.size())        {            if(nums1[i]==nums2[j])            {                result.push_back(nums1[i]);                while(i<nums1.size()&&nums1[i]==nums2[j]) i++;            }            else if(nums1[i]<nums[j]) i++;            else if(nums[i]>nums[j])  j++;        }        return result;    }};

//解法2:使用set数据结构,先遍历第一个数组,将其依次添加到set中(set本身就能保证数据不会重复),然后在其中依次找第二个数组中的数据,若找到了,就将其加到结果数组中,并将其从set中删除

class Solution {public:    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {        set<int> nums;        vector<int> intersection;        for(auto n:nums1){            if(nums.find(n)==nums.end())  nums.insert(n);        }        for(auto n:nums2){            if(nums.find(n)!=nums.end()){                intersection.push_back(n);                nums.erase(n);            }        }        return intersection;    }};
阅读全文
0 0