题目:
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, return [2, 2]
.
Note:
- Each element in the result should appear as many times as it shows in both arrays.
- The result can be in any order.
翻译:
给定两个数组,写一个函数计算他们的交集。
例子:
给定 nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2, 2]
.
注意:
- 结果中的每个元素出现的次数和两个数组中的次数相同。
- 结果可以是任何顺序的。
思路:
这道题目和上一道不同,上一道要求结果中的每一个元素只出现一次,而这个要求和数组中次数相同,因此,我们利用映射 m 先存储 nums1 中各元素出现的次数,然后和 nums2 中的元素比较,存储结果,并相应的对次数进行更改,大体思路同上一道。值得注意的是map.find()函数:返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
C++代码(Visual Studio 2017):
#include "stdafx.h"
#include
#include
#include