给定两个数组,编写一个函数来计算它们的交集。
方法一:HashMap
建立一个HashMap,遍历数组nums1,将数组nums1中的值依次添加到HashMap中,遇到重复的值,key.value++;
然后遍历数组nums2,将nums2中的元素查找HashMap,若存在且key.value>0,则将值添加到res[]数组中,并ke.value–;
代码如下:
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Map<Integer,Integer> map =new HashMap<Integer,Integer>();
for(int i = 0;i < nums1.length;i++){
int count = 1;
if(map.containsKey(nums1[i])){
count = map.get(nums1[i]) + 1;
}
map.put(nums1[i],count);
}
int[] res = new int[nums1.length];
int index = 0;
for(int i = 0;i < nums2.length;i++){
if(map.containsKey(nums2[i])){
if(map.get(nums2[i])>0){
res[index] = nums2[i];
index++;
int count = map.get(nums2[i]) - 1;
map.put(nums2[i],count);
}
}
}
int [] res2 = new int [index];
for(int i =0;i < index;i++){
res2[i] = res[i];
}
return res2;
}
}