以下使用字典的python代码的时间复杂度是多少?
我认为是O(n),但我认为“如果赞美中的赞美”这一行是O(n)而不是O(1),这使得整个程序的复杂性是O(n^2)以下使用字典的python代码的时间复杂度是多少?,python,performance,dictionary,time-complexity,Python,Performance,Dictionary,Time Complexity,我认为是O(n),但我认为“如果赞美中的赞美”这一行是O(n)而不是O(1),这使得整个程序的复杂性是O(n^2)O(n)-dict的中的是O(1)这意味着我查看的是键集还是值集并不重要。它总是O(1)。字典是作为哈希表实现的,它的搜索时间是常数O(1)不,键是O(1),而不是values@AChampion不,它不会,即使dict.values()是O(1)和O(1)空间,因为它是一个视图,这并不意味着成员资格测试是O(1)。我很确定这是O(N),dicts毕竟只是花哨的散列映射。我怀疑dic
O(n)
-dict的中的是O(1)
这意味着我查看的是键集还是值集并不重要。它总是O(1)。字典是作为哈希表实现的,它的搜索时间是常数O(1)不,键是O(1),而不是values@AChampion不,它不会,即使dict.values()
是O(1)和O(1)空间,因为它是一个视图,这并不意味着成员资格测试是O(1)。我很确定这是O(N),dicts毕竟只是花哨的散列映射。我怀疑dict.values()
是否创建了一个值的底层散列集,或者更荒谬的是,创建了一个反向映射,在任何情况下,dict.values
视图对象都不支持set操作,原因是。。。
def twoSum(self, nums, target):
compliments = {}
length = len(nums)
for i, num in enumerate(nums):
compliment_of_num = target-num
if compliment_of_num in compliments:
return [nums.index(compliment_of_num),i]
compliments.update({num:compliment_of_num})