这是什么意思?

时间:2019-08-31 17:13:07

标签: python logic

我已经开始处理Daily Code逻辑问题,并且收到了第一个问题,这很简单,但是我不明白“一次完成”的意思。它只需要一行吗?如果是,在这个问题上怎么可能? 那就是问题和我的代码:

##Good morning! Here's your coding interview problem for today.
##This problem was recently asked by Google.
##Given a list of numbers and a number k, return whether any two numbers from the list add up to k.
##For example, given [10, 15, 3, 7] and k of 17, return true since 10 + 7 is 17.
##Bonus: Can you do this in one pass?
def equivalent_sum(n,list_of_n):
  for x in list_of_n:
    for y in list_of_n:
      boolean = False
      if x != y:
        if x + y == n:
          boolean = True
        print("{} + {} {}".format(x,y,boolean))
l_of_numbers = [2,3,7,10,13,17,21]
equivalent_sum(20,l_of_numbers)

1 个答案:

答案 0 :(得分:1)

每秒钟==> O(n)时间复杂度

您将遍历该列表一次:

passed_nums = set() 
numbers = [2,3,7,10,13,17,21] 
k = 17 

def equivalent_sum(numbers):
    for num in numbers:
       diff = k - num
       if diff in passed_nums:
           return True
       passed_nums.add(num)
    return False

equivalent_sum(numbers)

或者您可以使用:

num_set = set(numbers)
any(k - e in num_set for e in numbers)  

内建函数更快,因为它们在C代码上运行