我目前正试图解决"问题349-两个数组的交集";在leetcode上,并试图返回他们交叉点的数组。我的目标是制作两个独立的集合,接受每个数组的值,因为我需要唯一的值。
我很困惑现在应该如何遍历这两个集合,以返回匹配的元素并返回。这是我的代码,我有一个问题,它告诉我有意义的bool object is not iterable
:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
set1 = set()
set2 = set()
newList = []
for i in nums1:
set1.add(i)
for j in nums2:
set2.add(j)
for i in set1 and j in set2:
if (set1(i) == set2(j)):
newList.append[i]
return newList
使用setsintersection
方法。
def intersection(self, nums1: list[int], nums2: list[int]) -> list[int]:
set1 = set(nums1)
set2 = set(nums2)
result = set1.intersection(set2)
return list(result)
这可以缩短为
def intersection(self, nums1: list[int], nums2: list[int]) -> list[int]:
return list(set(nums1).intersection(nums2))
不需要手动迭代列表来创建集合。set
接受一个可迭代的作为参数,所以使用列表是可以的。
您可以使用&
(设置交集(运算符。
>> s1 = {1, 2, 3}
>> s2 = {2, 3, 4}
>> s1 & s2
{2, 3}
或者,使用非运算符方法intersection
,该方法与运算符相反,也将可迭代(不一定是集合(作为其参数。
>> s1.intersection(s2)
{2, 3}
>> s1.intersection([2, 3, 4])
{2, 3}
如有必要,请转换为列表。
在您的情况下:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
return list(set(nums1) & set(nums2))