给定两个数组,编写一个函数来计算它们的交集。
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Map<Integer,Integer> map1 = new HashMap<Integer,Integer>();
Map<Integer,Integer> map2 = new HashMap<Integer,Integer>();
Map<Integer,Integer> resMap = new HashMap<Integer,Integer>();
for(int i=0;i<nums1.length;i++){
int value = map1.getOrDefault(nums1[i],0);
value++;
map1.put(nums1[i],value);
}
for(int i=0;i<nums2.length;i++){
int value = map2.getOrDefault(nums2[i],0);
value++;
map2.put(nums2[i],value);
}
int len = 0;
for(int key : map1.keySet()){
int value1 = map1.get(key);
int value2 = map2.getOrDefault(key,0);
if(value2>0){
int value = Math.min(value1,value2);
resMap.put(key,value);
len = len+value;
}
}
int[] res = new int[len];
int index = 0;
for(Map.Entry<Integer,Integer> mp: resMap.entrySet()){
for(int i=0;i<mp.getValue();i++){
res[index++] = mp.getKey();
}
}
return res;
}
}