我试图为一个赋值找到两个列表的交集和并集,但是,我不能使用集合。从集合论来看,两个集合之间的交集就是两个集合中的元素。并集是两个集合中的所有元素,没有重复。到目前为止,我已经:
setA = [1,2,3,4,5,6,7,8,9]
setB = [1,5,0,9]
def getUnion(a, b):
return a + b
def getIntersection(a, b):
return
我的联合函数返回重复项。有没有办法简单地找到工会?在
还有,找到十字路口的最佳方法是什么?在
Tags:
可以改为使用^{} 来计算并集和交集
^{pr2}$Counter
对象以格式保存数据:键是列表中的元素,值是列表中元素的出现。在
所以,假设您可以使用
sort
。先对两个列表排序,然后用两个指针进行排序,每次向前移动一个值较小的指针。在对于union func,每次将所有值相加,并在两个指针的值相等时向前移动两个指针。 对于“交集函数”,仅在值相等时添加值。在
时间O(nlogn+n)—>;O(nlogn)
不使用集合的并集和交集:
输出:
^{pr2}$说明:
对于联合体:
只需循环
setA
并添加在setB
中也可以找到的元素对于交叉口:
创建一个字典,其中的键和值是
setA + setB
的结果。{cd4>在字典中是唯一的,因为字典中的键是唯一的。在相关问题 更多 >
编程相关推荐