题解 | #两个数组的交集#
两个数组的交集
https://www.nowcoder.com/practice/56ea71d1f4e94de2aaec10e985874cce
//这一题使用了哈希表的思路来找到重复元素。 #include <unordered_set> #include <vector> class Solution { private: unordered_set<int>s1; unordered_set<int>s2; public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { s1.clear(); s2.clear(); vector<int>result; for (const int num : nums1) { //先遍历nums1,记录它有的元素是哪些 if (s1.count(num) == 0) { //如果nums1中有元素尚未被添加,那就添加。 s1.emplace(num); } } for (const int num : nums2) { //遍历nums2,看看它里面的哪些元素nums1里已经有了 if (s2.count(num) == 1)//如果是nums2中的重复元素,直接跳过,因为之前肯定已经处理过了。 { continue; } else//如果nums2里是第一次见到这个元素 { if (s1.count(num) == 1) //如果这个元素nums1里恰好存在,那就往result里加入。 { result.emplace_back(num); } s2.emplace(num);//不管nums1里存在与否,s2都得记录 。 } } return result; } };