题目
给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例1:
1 | 输入: nums1 = [1,2,2,1], nums2 = [2,2] |
示例2:
1 | 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] |
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
解法
解法一:
使用一个HashSet
数组中元素不是唯一的,因此,两个数组的交集可能存在不唯一的数字,因此,使用了一个HashSet来去重。
整体思路是将两个数组排序,从第一个开始对比,如果相等,则同时进1,如果A[indexA] > B[indexB],则B索引进1,否则A索引进1。
Java
1 | class Solution { |
解法二:
使用两个HashSet
将nums1和nums2的数据都保存到set1和set2中,然后利用HashSet的retainAll方法,求它们的交集,输出即可。
Java
1 | public int[] intersection(int[] nums1, int[] nums2) { |
解法三:
对nums1进行排序,然后遍历nums2,对每个在nums2中的数字,在nums1中二分查找,存在就保存到set中。
Java
1 | public int[] intersection(int[] nums1, int[] nums2) { |