题目描述
给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
求解思路
- 由于我们考虑的结果是去重的,比如 nums1 和 nums2 有两个相同元素‘2’,但是最后只需要输出‘2’,所以考虑Set来存放,因为Set中元素是不可重复的;
- 首先在set1中存放num1中所有的不重复的元素;
- 其次set2 需要判断 nums2中那些元素在set1中出现,并把这些重复元素加入到set2中;
- 最后将set转换为数组,返回这个数组即可。
输入输出示例
代码
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
for(int i : nums1){
set1.add(i);
}
Set<Integer> set2 = new HashSet<>();
for(int i : nums2){
if(set1.contains(i)) set2.add(i);
}
int i = 0;
int[] intarr = new int[set2.size()];
for(Integer a : set2){
intarr[i++] = a;
}
return intarr;
}
}