给定两个数组
nums1
和nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:[4,9] 也是可通过的
思路分析:
可以设立两个哈希表,将 nums1 的值全部存入哈希表 s1 中,在哈希表 s2 中,遍历数组 nums2,如果数组中的元素在 s1 中存在,那么将该元素存入 s2 中,最后返回 s2 即可。
代码实现:
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> s1 = new HashSet<>();
Set<Integer> s2 = new HashSet<>();
for (int i : nums1){
s1.add(i);
}
for (int i : nums2){
if (s1.contains(i))s2.add(i);
}
int [] ans = new int[s2.size()];
int cnt = 0;
for (int i : s2){
ans[cnt++] = i;
}
return ans;
}
}
提交结果:
55 / 55 个通过测试用例
状态:通过
执行用时: 2 ms
内存消耗: 41.8 MB
提交时间:6 分钟前