力扣热题:两个数组的交集
开篇
今天早上状态不错,花了较短的时间刷了4道力扣算法题。挑选了一道还不错的题目与大伙分享。
题目链接:349.两个数组的交集
题目描述
代码思路
看到题目后,想到可以把一个数组用集合存起来,然后用另外一个数组的元素对集合里的元素进行判断:是否有该元素在集合中。如果有,这个元素就是符合题目要求的元素,存在另外一个集合。最后把这个集合转换成数组即可。
代码纯享版
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();
List<Integer> list = new ArrayList<>();
for(int i: nums1) set.add(i);
for(int k: nums2){
if(set.contains(k) && !list.contains(k)) list.add(k);
}
int[] arr = new int[list.size()];
for(int i=0; i < list.size(); i++){
arr[i] = list.get(i);
}
return arr;
}
}
代码逐行解析版
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();//保存第一个数组的元素,利用set的方法方便比较
List<Integer> list = new ArrayList<>(); //筛选最后需要的元素
for(int i: nums1) set.add(i); //增强for循环,把第一个数组所有元素放入
for(int k: nums2){ //遍历第二个数组,如果set和list之前都没有这个元素,就放入list
if(set.contains(k) && !list.contains(k)) list.add(k);
}
int[] arr = new int[list.size()]; //创建数组,把list都元素转移到数组
for(int i=0; i < list.size(); i++){
arr[i] = list.get(i);
}
return arr; //返回数组
}
}
结语
如果这篇文章让你有所收获,点个关注。我每天会更新力扣题的讲解,与大家一起进步。