0
点赞
收藏
分享

微信扫一扫

LeetCode.349 两个数组的交集

1.题目:

给定两个数组 ​nums1​ 和 ​nums2​ ,返回 它们的交集 唯一 的。我们可以 不考虑输出结果的顺序 。

2.代码实现

方法一:

class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
//创建一个哈希表用来储存两个数组中相同的元素,哈希集合会有去重的作用
//无序、不重复、无索引
HashSet<Integer> hs = new HashSet<>();

// int len = nums1.length + nums2.length;
// int[] arr = new int[hs.size()];
for(int i=0; i<nums1.length; i++){
for(int j=0; j<nums2.length; j++){
if(nums1[i]==nums2[j]){
hs.add(nums2[j]);
}
}

}
//定义一个数组返回
//注意数组的长度就是遍历完后的集合的长度,不能把这个创建数组放到两层循环遍历的前面
int[] ints = new int[hs.size()];
int i = 0;//自己假设索引
for (Integer integer : hs) {
ints[i++] = integer;//把集合里的每一个元素放到数组里面
}
return ints;//最后返回数组

}
}


方法二:

class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
//第一个集合用来储存第一个数组的元素
HashSet<Integer> hs = new HashSet<>();
//第二个集合用来储存在第一个集合和第二个数组都存在的元素
HashSet<Integer> result = new HashSet<>();

for(int i: nums1){
hs.add(i);
}
for(int i:nums2){
if(hs.contains(i)){//注意集合中判断元素是否存在的方法
result.add(i);
}
}
int[] arr = new int[result.size()];//注意创建数组的长度
int index=0;
for(int i:result){
arr[index++] = i;
}
return arr;

}
}










举报

相关推荐

0 条评论