Python - 时间复杂度O(N ** 2)

时间:2017-03-23 15:18:53

标签: python time-complexity big-o

任何人都可以告诉我在下面的代码中,我们得到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

有没有办法在线检查时间复杂度? 谢谢你的帮助!

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)