[英]What is Time complexity of "set" and "if item in array" in Python?
我需要检查一个数字及其双精度数是否存在于数组中。 这段代码使用set
来解决它。 但是我不确定时间复杂度是否优于O(N^2)
。 我使用for loop
和if 2*item in s
如下所示。 不是要知道该项目是否在数组中,我们使用另一个O(N)
。 这意味着总共O(N^2)
? 如果它是最佳的,我如何在不使用nested loop
的情况下实现 C 中的代码?
非常感谢!
def checkIfExist(arr]) -> bool:
s = set(array)
for item in s:
if 2 * item in s and item != 0:
return True
if arr.count(0) >= 2:
return True
return False
python 中集合的“in”运算符的时间复杂度平均为 O(1),仅在最坏的情况下为 O(N),因为 python 中的集合在内部使用 HashTable。
所以你的函数的平均时间复杂度应该是 O(N),只有在最坏的情况下才会是 O(N^2),其中 N 是数组的长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.