leetcode上第350号问题:Intersection of Two Arrays II

给定两个数组,编写一个函数来计算它们的交集。

示例 1:    
输入: nums1 = [1,2,2,1], nums2 = [2,2]    
输出: [2,2]

示例 2:  
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]

说明:

  • 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。

  • 我们可以不考虑输出结果的顺序。

思路

容器类map的使用。

  • 遍历num1,通过map容器record存储num1的元素与频率

  • 遍历num2,在record中查找是否有相同的元素(该元素的存储频率大于0),如果有,用map容器resultVector进行存储,同时该元素的频率减一

动画演示


代码

 1// 350. Intersection of Two Arrays II
2// https://leetcode.com/problems/intersection-of-two-arrays-ii/description/
3// 时间复杂度: O(nlogn)
4// 空间复杂度: O(n)
5class Solution {
6public:
7    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
8
9        map<intint> record;
10        for(int i = 0 ; i < nums1.size() ; i ++){
11             record[nums1[i]] += 1;
12        }
13
14        vector<int> resultVector;
15        for(int i = 0 ; i < nums2.size() ; i ++){
16            if(record[nums2[i]] > 0){
17                resultVector.push_back(nums2[i]);
18                record[nums2[i]] --;
19            }
20        }
21
22        return resultVector;
23    }
24};

执行结果


©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Python办公自动化|光速对比并提取两份Word/Excel中的不同元素
  2. 动画: 快速排序 | 如何求第 K 大元素?
  3. PHP中的相关服务容器与依赖注入的相关解析
  4. PHP中的服务容器与依赖注入的思想
  5. php获取数组中最后一个元素的方法
  6. php实现获取数组中相同/不相同的元素
  7. Pimple运行流程浅析(PHP容器)

随机推荐

  1. Android笔记: Android版本号
  2. Beginning Android 4--Exercises 1
  3. Android之打开闪光灯关键代码
  4. 自定义progressbar使用图片
  5. Android 获取剩余存储空间
  6. Android中全屏无标题设置(Android学习随笔
  7. Android性能测试(内存、cpu、fps、流量、G
  8. Shape实现圆形图片
  9. Android 启动界面Splash
  10. android 左右翻页