LeetCode_48_IntersectionOfTwoArrays


1. question: 两个数组的交集(简单)

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays

示例 1:

1
2
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

1
2
3
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

1
2
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000

2. answers

这道题也是比较简单的,采用哈希表来做,先遍历第一个数组,存入哈希表;然后遍历第二个数组,利用哈希表来检索是否存在该元素,如果存在就说明该元素是交集。代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class Solution_0045 {

public static int[] intersection(int[] nums1, int[] nums2) {

// 对reshuffle情况进行判断一下
if(nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0)
return new int[0];

HashSet<Integer> hashSet = new HashSet<>();
HashSet<Integer> results = new HashSet<>();

for(int i: nums1) {
hashSet.add(i);
}

for(int i: nums2) {
if(hashSet.contains(i)) results.add(i);
}

int[] result = new int[results.size()];
int index = 0;
for (Integer integer : results) {
result[index++] = integer;
}

return result;
}

public static void main(String[] args) {
System.out.println();

// int[] nums1 = {1, 2, 2, 1};
// int[] nums2 = {2, 2};

int[] nums1 = {4, 9, 5};
int[] nums2 = {9, 4, 9, 8, 4};

int[] result = intersection(nums1, nums2);
for(int i: result) {
System.out.println(i);
}
}
}

3. 备注

参考力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 (leetcode-cn.com)代码随想录 (programmercarl.com)


文章作者: 浮云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 浮云 !
  目录