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) {
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 = {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)。