一开始用的HashMap,同时还用了ArrayList储存
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Map<Integer, Integer> table = new HashMap<Integer, Integer>();
ArrayList<Integer> res = new ArrayList<Integer>();
for(int i = 0; i < nums1.length; i++){
table.put(nums1[i],1);
}
for(int i = 0; i < nums2.length; i++){
if(table.containsKey(nums2[i]) && table.get(nums2[i]) != -1){
res.add(nums2[i]);
table.put(nums2[i],-1);
}
}
int[] res1 = new int[res.size()];
for(int i = 0; i < res.size(); i++){
res1[i] = res.get(i);
}
return res1;
}
}
后来想到可以用HashSet储存并且返回结果,这样以来就不需要记录出现的次数了,所以也不需要用Hashtable储存出现的次数了。
用到了Hashset的一个特性:
“HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。. HashSet 允许有 null 值。. HashSet 是无序的,即不会记录插入的顺序。”
使用HashSet之后的代码:
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> table = new HashSet<Integer>();
Set<Integer> res = new HashSet<Integer>();
for(int i = 0; i < nums1.length; i++){
table.add(nums1[i]);
}
for(int i = 0; i < nums2.length; i++){
if(table.contains(nums2[i])){
res.add(nums2[i]);
}
}
int[] res1 = new int[res.size()];
int j = 0;
for(int i : res){
res1[j++] = i;
}
return res1;
}
}