我正在学习Big O,需要帮助计算我的函数的大O.
如果自我大小为s而其他大小为o
,我需要找出大O.我不确定调用has函数的复杂性,因为我知道交集中的for循环将是S的复杂性
但是has()的复杂性是否大小为o?因为id想象它必须循环遍历o直到找到匹配或返回false。
自我和其他正在使用的数据类型是正面和负面的整数
def has(self, item):
return item in self.items
def intersection(self, other):
common = Set()
for item in self.items:
if other.has(item):
common.add(item)
return common
答案 0 :(得分:1)
检查值是否在列表中的时间复杂度为O(n)
(它必须循环)。检查值是否在集合中的时间复杂度为O(1)
- 它将计算哈希并检查集合中是否存在该哈希值。您可以编写自己的类来实现in
,其中时间复杂度与您自己的实现相关。如果不知道other
的定义,则无法回答此问题。