1.数据结构的选择
unordered_set是集合的一种数据结构,他的底层是由哈希函数来实现的,里面的元素可以是无序的,同时里面的元素是不能够重复的,所以可以采用这种数据结构对结果进行一个去重。
2.代码实现及其思路
1.定义一个result数组,用来存放两个数组之间的交集元素
2.定义一个数组arr,用来记录数组num1元素是否出现过,将数组元素num1[i]作为数组arr的下标,例如数组元素2,那么arr[2]=1,用来记录2出现过
3.遍历另一个数组num2,将数组num2中的元素作为arr数组的下标,然后判断是否为1,如果是的话,就证明是在num1中出现过的,那么该元素就是num1和num2两个数组的交集,所以就将该元素加入到result中,同时result可以对其中的元素进行一个去重。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result;
int arr[1004]={0};
for(int i=0;i<nums1.size();i++){
arr[nums1[i]]=1;
}
for(int i=0;i<nums2.size();i++){
if(arr[nums2[i]]==1){
result.insert(nums2[i]);
}
}
return vector<int>(result.begin(), result.end());
}
};
提示:如果数组元素过多,用数组来解决这道二问题是存在一定的问题的。