349. 两个数组的交集
题目描述
题目分析
因为是数组求交集,而且数组首先无法确定数值会有多大,所以如果利用哈希函数建立索引是无意义的,其次题目给出的数组是重复的,求得的交集是无序不重复的,所以我们考虑用Java的hashset方法,因为hashset方法底层是数组+链表+红黑树,运行的快,我们对于nums1进行遍历,用hashset进行重写,这样hashset里面全部都是无序不重复的数值,然后我们对于nums2进行遍历,再用一个新的hashset2进行写入,额外多加一个判断语句,并且用nums1的hashset进行判断,如过hashset1里面有这个数值才写入到hashset2里面,最后我们将hashset2转化成数组就可以了.
代码
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
HashSet<Integer> hashSet1 = new HashSet<>();
HashSet<Integer> hashSet2 = new HashSet<>();
for (int i : nums1) {
hashSet1.add(i);
}
for (int i : nums2) {
if (hashSet1.contains(i)){
hashSet2.add(i);
}
}
int[] ints = new int[hashSet2.size()];
int index = 0;
for (Integer integer : hashSet2) {
ints[index++] = integer;
}
return ints;
}
}