降低python中嵌套for循环的时间复杂度

时间:2020-08-25 13:22:33

标签: python

import math
#check if a number is fibonacci
def is_fib(n):
    return math.sqrt(5* n**2 + 4 ).is_integer() or math.sqrt(5* n**2 - 4).is_integer()

for i in range(int(input())):
    T = int(input())
    liste = [i for i in map(int,input().split())]
    cnt = 0
    arr = {}
    for i in range(len(liste)):
        for j in range(1,len(liste)):
          if is_fib(liste[i]+liste[j]) and (liste[i]+liste[j] not in arr)  and liste[i] != liste[j]: 
              cnt +=1
              arr[liste[i]+liste[j]] = liste[i]+liste[j]
    print(cnt)

我解决了一个问题,即列表中两个数字的和是斐波那契数 但是我得到的时间复杂度是O(n ^ 2)

如何减少时间复杂度

0 个答案:

没有答案