LeetCode链接:力扣
题目:
给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
代码:(用哈希表的方法,但是耗时较长,不是最优的写法)
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for(int num:nums1){
set1.add(num);
}
for(int num:nums2){
set2.add(num);
}
return getIntersection(set1, set2);
}
public int[] getIntersection(Set<Integer> set1, Set<Integer> set2){
if(set1.size() > set2.size()){
getIntersection(set2, set1);
}
Set<Integer> intersectionSet = new HashSet<>();
for(int num:set1){
if(set2.contains(num)){
intersectionSet.add(num);
}
}
int[] intersection = new int[intersectionSet.size()];
int index = 0;
for(int num:intersectionSet){
intersection[index++] = num;
}
return intersection;
}
}