LeetCode:Intersection II
class Solution { public: vector<int>intersection(vector<int> & nums1, vector<int> & nums2) { vector<int> res; map<int, int> record; for (int i = 0; i < nums1.size();++i) { record[nums1[i]] += 1; } for (int i = 0; i < nums2.size(); i++) { if (record[nums2[i]]>0) { res.push_back(record[nums2[i]]); record[nums2[i]]--; } } return res; } };
给定两个数组,编写一个函数来计算它们的交集。
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
输出: [4,9]
与上题 两个数组的交集 类似。只不过这里使用的是 map 。
-
遍历 num1,通过 map 容器 record 存储 num1 的元素与频率;
-
遍历 num2 ,在 record 中查找是否有相同的元素(该元素的存储频率大于 0 ),如果有,用 map 容器resultVector 进行存储,同时该元素的频率减一。