给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]
java
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
if(nums1 == null || nums2 == null){
return new int[0];
}
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for(int i = 0;i<nums1.length;i++){
set1.add(nums1[i]);
}
for(int i = 0;i<nums2.length;i++){
if(set1.contains(nums2[i])){
set2.add(nums2[i]);
}
}
int[] arr = new int[set2.size()];
int index = 0;
for(int num : set2){
arr[index++] = num;
}
return arr;
}
}
python
这个代码我称之为优雅,不过分吧
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
set1 = set(nums1)
set2 = set(nums2)
return self.set_intersection(set1, set2)
def set_intersection(self, set1, set2):
if len(set1) > len(set2):
return self.set_intersection(set2, set1)
return [x for x in set1 if x in set2]