一.需求分析
https://leetcode.cn/problems/intersection-of-two-arrays-ii/solutions/327356/liang-ge-shu-zu-de-jiao-ji-ii-by-leetcode-solution/
二.解决思路
哈希表
- 数据结构的选择
使用unordered_map
存储元素值(key
)和这个值出现的次数(value
)
使用vector
存储两数组中相同的元素
出现的次数元素
,(如果出现次数不一致,则取较小值); - 逻辑思路的设计
先使用一次判断来避免第一个参数是数组数量比较多的
那个;
使用for循环
把较短数组中的元素和出现的次数存储在unordered_map
接着使用for循环
和两次判断
语句对数组2中的每一个元素:第一次判断先筛选掉数组1中没有的元素值,第二次判断筛选掉有重复值但是最低次数是1
的元素值。
排序 + 双指针
- 数据结构的选择
使用vector<int>
存储返回结果的元素值
;
使用int
存储数组的索引值; - 逻辑思路的设计
先使用sort
对两个数组进行的排序(由小到大);
使用while
筛选掉以下情况:某一个数组的索引值到达了最后一个元素,而另一个数组的索引值未到达最后一个元素
+if
对当前索引值指向的元素值进行有逻辑的判断
,由于已经经过排序了,所以可以知道元素值两两比较
只有三种结果