题目要求
给定两个数组,求他们的交集。
解题思路
求交集,所以元素只能出现一次。元素去重的话,我们想到了用set。整体流程:将其中一个数组变成set形式,然后用另一个数组去搜索这个set,如果在set中找到第二个数组的元素,那么我们就记录下来,然后再set中删除,防止再次出现,造成重复添加。
主要代码c++
class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
set<int>s(begin(nums1), end(nums1)); //构建setvector<int>ans;for(int i=0; i<nums2.size(); ++i)if(s.find(nums2[i])!=s.end()){
ans.push_back(nums2[i]); s.erase(nums2[i]); //这一步很关键,避免重复添加} return ans;}
};
相似题目:leetcode 350 两个数组中的重复元素