题目描述
题目.png解题思路
将nums1数组中的元素和元素出现的次数传入map集合中,元素作为集合中的键,出现的次数作为集合中的值。定义一个List集合存放两个数组共同的元素。然后,遍历nums2数组,判断元素是否出现在map集合中,在集合里就将元素传入到list中,并且将集合中元素对应出现的次数减1。接着,定义一个新的数组,将list中的元素传入到数组中,返回数组。
java源码
public int[] intersect(int[] nums1,int[] nums2){
List<Integer> tmp=new ArrayList<>();
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<nums1.length;i++){
if(map.containsKey(nums1[i])){
map.put(nums1[i],map.get(nums1[i])+1);
}
else{
map.put(nums1[i],1);
}
}
for(int i =0;i<nums2.length;j++){
if(map.containsKey(nums2[i])&&map.get(nums2[i])!=0){
tmp.add(nums2[i]);
map.put(nums2[i],map.get(nums2[i])-1);
}
}
int[] result=new int[tmp.size()];
int i=0;
for(int num:tmp){
results[i]=num;
i++;
}
return result;
}
网友评论