求两个集合的交集,可以先排序在比较是否相等,也可以使用hashmap
hashmap以key—value的形式存在,向hashmap存入数据时,要使用put(key,value);而get(key)则是找出键值为key的元素对应的value,这里对应存储的是某个元素的个数,首先先将第一个数组中的元素和其个数存入hashmap中,然后,在看遍历第二个数组,如果存在且个数不为零,则value减一,最后将列表转移到数组中
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
int i;
for(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);
}
LinkedList<Integer> li = new LinkedList<Integer>();
for(i = 0;i < nums2.length;i++){
if(map.containsKey(nums2[i]) && map.get(nums2[i]) > 0){
li.add(nums2[i]);
map.put(nums2[i],map.get(nums2[i]) - 1);
}
}
int n = li.size();
int[] a = new int[n];
for(i = 0;i < n;i++){
a[i] = li.poll();
}
return a;
}
}