任何人都可以告诉我在下面的代码中,我们得到O(N ** 2):
def solution(X, A):
assistant = list(range(1, X+1))
assistant_sum = sum(assistant)
helper = set()
if X not in A:
return -1
if A.count(A[0]) == len(A):
if A[0] == 1:
return 0
return -1
for y in A:
helper.add(y)
sorted_helper = sorted(list(helper))
if sum(sorted_helper[0:X]) == assistant_sum:
helper = set()
for index, i in enumerate(A):
try:
helper.add(i)
if len(list(helper)[0:X]) == len(assistant) and int((list(helper)[0]+list(helper)[X-1])/2.0*len(helper)) == assistant_sum:
return index
except IndexError:
pass
else:
return -1
有没有办法在线检查时间复杂度? 谢谢你的帮助!
答案 0 :(得分:0)
helper
是一个可以与你的for循环for index, i in enumerate(A)
中的A.一样长的集合,然后你调用list(helper)
如果A的长度为N,则list(helper)
为O(N)
,for index, i in enumerate(A)
为O(N)
。
O(N)
循环中O(N)
的陈述给出了O(N**2)