public class demo6 {
public int[] intersect(int[] nums1, int[] nums2) {
//1.创建一个hashMap,map的key储存第一个数组的每个值,value存储每个值出现的次数。
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for (int i = 0; i < nums1.length; i++) {
//统计num1出现的频率
if(!map.containsKey(nums1[i])){
map.put(nums1[i],1);
}else {
map.put(nums1[i], map.get(nums1[i])+1 );
}
}
//数组2有一样的key就添加到集合中去,同时把出现该值的频率减一,hashmap put同一个key,会覆盖之前的value
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i <nums2.length; i++) {
if(map.containsKey(nums2[i])&&map.get(nums2[i])!=0){
list.add(nums2[i]);
map.put(nums2[i], map.get(nums2[i])-1);
}
}
//输出结果
int[] target= new int[list.size()];
for (int i = 0; i < list.size(); i++) {
target[i]=list.get(i);
}
return target;
}
}
letcode 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。
最新推荐文章于 2024-11-08 14:58:24 发布