问题
给定两个数组,编写一个函数来计算它们的交集。

例子

思路
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;
}
}

本文介绍了一种使用哈希映射计算两个整数数组交集的方法。通过遍历第一个数组建立元素频率映射,然后遍历第二个数组,对于映射中存在的元素进行计数减一操作,同时收集交集元素。
1111

被折叠的 条评论
为什么被折叠?



