題目描述:
解題思路:
//Java
class Solution {
public int[] set_intersection(HashSet<Integer> set1, HashSet<Integer> set2)
{
int [] output = new int[set1.size()];
int idx = 0;
for (Integer s : set1)//遍歷數據set1
if (set2.contains(s)) output[idx++] = s;//檢查set2裏是否包含set1,若包含則添加到新的數組裏
return Arrays.copyOf(output, idx);
}
public int[] intersection(int[] nums1, int[] nums2)
{
HashSet<Integer> set1 = new HashSet<Integer>();//創建哈希表Set1
for (Integer n : nums1) set1.add(n);
HashSet<Integer> set2 = new HashSet<Integer>();//創建哈希表Set2
for (Integer n : nums2) set2.add(n);
//執行數據的交集操作
if (set1.size() < set2.size()) return set_intersection(set1, set2);
else return set_intersection(set2, set1);
}
}
算法複雜度分析:
時間複雜度:O(n)
空間複雜度:O(n)
//python3
class Solution:
def set_intersection(self, set1, set2):
return [x for x in set1 if x in set2]
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
set1 = set(nums1)#集合1
set2 = set(nums2)#集合2
if len(set1) < len(set2):
return self.set_intersection(set1, set2)
else:
return self.set_intersection(set2, set1)