题目描述:
给定两个数组 nums1
和 nums2
,返回它们的 交集。输出结果中的每个元素是 唯一 的,且可以不考虑输出结果的顺序。
示例:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
这道题的核心是找到两个数组中共同出现的元素,并且结果中的元素是唯一的。以下是几种常见的解法:
这里我们重点讲解 哈希集合法,因为它既高效又容易理解。
初始化:
set
,用于存储 nums1
中的元素。resultSet
,用于存储结果。存储 nums1
的元素:
nums1
,将每个元素添加到 set
中。查找交集:
nums2
,检查每个元素是否存在于 set
中:
resultSet
中。返回结果:
resultSet
转换为数组并返回。import java.util.HashSet;
import java.util.Set;
public class IntersectionOfTwoArrays {
public int[] intersection(int[] nums1, int[] nums2) {
// 创建哈希集合,存储 nums1 的元素
Set<Integer> set = new HashSet<>();
for (int num : nums1) {
set.add(num);
}
// 创建哈希集合,存储结果
Set<Integer> resultSet = new HashSet<>();
// 遍历 nums2,查找交集
for (int num : nums2) {
if (set.contains(num)) {
resultSet.add(num);
}
}
// 将 resultSet 转换为数组
int[] result = new int[resultSet.size()];
int index = 0;
for (int num : resultSet) {
result[index++] = num;
}
return result;
}
}
初始化:
set
用于存储 nums1
的元素,resultSet
用于存储结果。存储 nums1
的元素:
nums1
,将每个元素添加到 set
中。查找交集:
nums2
,检查每个元素是否存在于 set
中:
resultSet
中。返回结果:
resultSet
转换为数组并返回。输入:nums1 = [1,2,2,1]
, nums2 = [2,2]
存储 nums1
的元素:
set = {1, 2}
查找交集:
nums2
:
2
存在于 set
中,添加到 resultSet
→ resultSet = {2}
返回结果:
resultSet
转换为数组 [2]
输出:[2]
nums1
和 nums2
的长度。nums1
和 nums2
的大小。这道题通过哈希集合法,高效地找到了两个数组的交集。对于初学者来说,掌握哈希集合的使用是解决类似问题的关键。
相关推荐:
我是Yohen,一名正在成长的技术博主,欢迎关注我,一起学习,一起进步!