要求
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
说明:
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。
核心代码
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
return list(set(nums1) & set(nums2))
另一解法
# 超时
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
nums1,nums2 = sorted(nums1),sorted(nums2)
res = set()
for item in nums1:
if self.exist(nums2,item):
res.add(item)
return list(res)
def exist(self,nums,i):
left = 0
right = len(nums) - 1
while left <= right:
mid = (right + left) // 2
if nums[mid] > i:
right = mid - 1
elif nums[mid] < i:
left = mid - 1
else:
return True
return False
解题思路:第一种解法:我们将两个数组转化成set,然后取一下交集,最后结果输出成list即可;第二种解法:我们使用二分查找的方式看nums1中元素是不是存在在,存在最后放到输出中,但是这个会超时。