349.两个数组的交集

题目描述

给定两个数组,编写一个函数来计算它们的交集。

示例1

  • 输入:nums1 = [1,2,2,1],nums2 = [2,2]
  • 输出:[2]

示例2

  • 输入:nums1 = [4,9,5],nums2 = [9,4,9,8,4]
  • 输出:[9,4]

说明

  • 输出结果中的每个元素一定是唯一的。
  • 我们可以不考虑输出结果的顺序

题解

该题可以参考【桶排序】的思想。
借助两个一维数组,申请两个大小为10001的数组flag1和flag2,用于标记两个数组中每个数字是否出现过,=1出现过,=0未出现过,当flag1和flag2都为1时,就把该元素加入交集。

代码如下

  class Solution {
public:
    vector intersection(vector& nums1, vector& nums2) {
        vector inter;
        if(nums1.size() == 0 || nums2.size() == 0)
            return inter;
        int flag1[10001] = {0};
        int flag2[10001] = {0};
        for(int i = 0; i < nums1.size(); i++)
        {
            flag1[nums1[i]] = 1;
        }
        for(int i = 0; i < nums2.size(); i++)
        {
            flag2[nums2[i]] = 1;
        }
        for(int i = 0; i < 10001; i++)
        {
            if(flag1[i] == 1 && flag2[i] == 1)
                inter.push_back(i);
        }
        return inter;
    }
};

结果

这道题的提交很顺利,一次就通过了


两个数组的交集

你可能感兴趣的:(349.两个数组的交集)