問題
給定兩個數組,編寫一個函數來計算它們的交集。
例子
思路
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;
}
}