哈希表()

题目:给定两个数组  和  ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

nums1
nums2

foreach的语句格式:for(元素类型t 元素变量x : 遍历对象obj){     }

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重
        unordered_set<int> nums_set(nums1.begin(), nums1.end());
        for (int num : nums2) {
            // 发现nums2的元素 在nums_set里又出现过
            if (nums_set.find(num) != nums_set.end()) {
                result_set.insert(num);
            }
        }
        return vector<int>(result_set.begin(), result_set.end());
    }
};

数组解法:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set;
        int hash[1006]={0};

        for(int i=0;i<nums1.size();i++)//遍历容器1
        {
            hash[nums1[i]]=1;
        }

        for(int i=0;i<nums2.size();i++)
        {
            if(hash[nums2[i]]==1)
            {
                result_set.insert(nums2[i]);
            }
        }
        return vector<int> (result_set.begin(),result_set.end());

    }
};
————————

题目:给定两个数组  和  ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

nums1
nums2

foreach的语句格式:for(元素类型t 元素变量x : 遍历对象obj){     }

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重
        unordered_set<int> nums_set(nums1.begin(), nums1.end());
        for (int num : nums2) {
            // 发现nums2的元素 在nums_set里又出现过
            if (nums_set.find(num) != nums_set.end()) {
                result_set.insert(num);
            }
        }
        return vector<int>(result_set.begin(), result_set.end());
    }
};

数组解法:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set;
        int hash[1006]={0};

        for(int i=0;i<nums1.size();i++)//遍历容器1
        {
            hash[nums1[i]]=1;
        }

        for(int i=0;i<nums2.size();i++)
        {
            if(hash[nums2[i]]==1)
            {
                result_set.insert(nums2[i]);
            }
        }
        return vector<int> (result_set.begin(),result_set.end());

    }
};