349.兩個陣列的交集
阿新 • • 發佈:2022-03-23
題目
給定兩個陣列 nums1 和 nums2 ,返回它們的交集 。輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序
示例1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2]
輸出:[2]
示例2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出:[9,4]
解釋:[4,9] 也是可通過的
解題思路
雜湊
unordered_map:
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { unordered_map<int,int> hashmap; vector<int> rtn; for(int i=0;i<nums1.size();i++) { if(!hashmap.count(nums1[i]))hashmap[nums1[i]]=i;//將nums1中出現過的數字加入雜湊表 } for(int i=0;i<nums2.size();i++) { if(hashmap.count(nums2[i]))//遍歷nums2,對於與nums1中已經出現的數字壓入要返回的vector中 { vector<int>::iterator it=find(rtn.begin(),rtn.end(),nums2[i]); if(it==rtn.end())rtn.emplace_back(nums2[i]);//題目要求返回值不能重複,所以加了一個判斷的條件 } } return rtn; } };
unordered_set
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { vector<int> ans; unordered_set<int> us{ nums1.begin(), nums1.end() }; for (auto& iter : nums2) { if (us.find(iter) != us.end()) { us.erase(iter); ans.emplace_back(iter); } } return ans; } };