问题
给定两个数组,编写一个函数来计算它们的交集。
例子
思路
map记录nums1中各元素出现的个数
遍历num2,当元素在map.containsKey(ele) && map.get(n)>=1时,将list.add(ele) 并让map中k的值-1
代码
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
List<Integer> list = new ArrayList<>();
Map<Integer,Integer> map = new HashMap<>();
// //map2交集:带个数
// Map<Integer,Integer> map2 = new HashMap<>();
for(int n : nums1)
map.put(n,map.getOrDefault(n,0)+1);
// for(int n : nums2)
// map2.put(n,map2.getOrDefault(n,0)+1);
// // if(map.containsKey(n))
// for(int k:map2.keySet())
// {
// if(map.containsKey(k)) {
// int a=map.get(k);
// int b=map2.get(k);
// int len=Math.min(a,b);
// for(int i=0; i<len; i++)
// list.add(k);
// }
// }
for(int n:nums2){
if(map.containsKey(n) && map.get(n)>=1){
list.add(n);
map.put(n,map.get(n)-1);
}
}
int[] arr = new int[list.size()];
for(int i=0; i<list.size(); i++)
arr[i]=list.get(i);
return arr;
}
}