题目描述
给定两个数组,编写一个函数来计算它们的交集。
输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
示例
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]
算法分析
1.将第一个数组中的元素存入Map1
2.对第二个数组进行遍历,如果其中的元素被Map1的KeySt包含并且Value值大于0,则将其存入新的Map2,并且Map1该元素的Value减一,否则跳过.
3.将Map2中的元素添加进数组.
代码
public int[] intersect(int[] nums1, int[] nums2) {
Map<Integer, Integer> map = new HashMap();
for (int i : nums1) {
if (map.keySet().contains(i)) {
map.put(i, map.get(i) + 1);
} else {
map.put(i, 1);
}
}
ArrayList<Integer> list = new ArrayList();
for (int i : nums2) {
if (map.keySet().contains(i) && map.get(i) > 0) {
list.add(i);
map.put(i, map.get(i) - 1);
}
}
int arr[] = new int[list.size()];
arr = list.
for (int i = 0; i < arr.length; i++) {
arr[i] = list.get(i);
}
return arr;
}