1.题目描述:
2.1解决方法:
从题目中知道,我们需要判断两个数组中是否有相同的元素,并返回由这些无重复元素组成的新数组
解决思路:
1.先将数组nums1转变成哈希表
2.然后我们再遍历nums2
3.我们查看nums2中的元素是否在哈希表中出现过,并且将出现过的元素放进一个新建的result集合中(该集合中的元素是去重过的)
解决步骤:
set,multiset:底层实现是红黑树
unordered_set:底层实现是使用哈希值直接映射的方式
此处我们选择unordered_set来解决该问题,因为它做映射和取值的时候效率是最高的;set,multiset底层是数,还有一个查询的过程
- 定义一个result来存储交集中的元素
- 将nums1数组转换成unordered_set
- 遍历nums2数组中的元素
- 判断nums2中的元素是否与unordered_set中的元素相同,并将相同的放入result中
- 将result数组转换为数组并返回
2.2完整代码:
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {
return new int[0];
}
Set<Integer> set1 = new HashSet<>();
Set<Integer> resSet = new HashSet<>();
for (int i : nums1) {
set1.add(i);
}
for (int i : nums2) {
if (set1.contains(i)) {
resSet.add(i);
}
}
return resSet.stream().mapToInt(x -> x).toArray();
}
}
3.小节:
著此篇,与君享,互勉之,共进步!