下面的代码块是一个问题的解决方案,您需要找到一个数组的两个元素,这些元素加起来等于一个定义的整数(k)
# Solution 1:
def two_sum(lst, k):
for i in range(len(lst)):
for j in range(len(lst)):
if i != j and lst[i] + lst[j] == k:
return True
return False
# Solution 2:
def two_sum(lst, k):
seen = set()
for num in lst:
if k - num in seen:
return True
seen.add(num)
return False
答案 0 :(得分:1)
Python(缩进了吗?)
for i in range(x)
是从0到x-1范围内的Python迭代方式。在Ruby中,可以用几种不同的方式来表示相同的内容,例如,使用for循环for i in 0...x
,使用范围上的迭代器作为(0...x).each { |i| ... }
或什至x.times { |i| ... }
的方式非常相似。
seen
包含列表(数组)中已检查的数字。如果k - num
等于seen
中的任何数字(将其命名为j
),则表示j + num == k
-q.e.d。例如,假设我们有lst = [1,3,4,7,11]
和k = 5
。在这种情况下,该算法将按以下方式工作:
第1步:seen = []
,num = 1
,k - num = 4
,4
不在seen
中-我们
将1
添加到seen
第2步:seen = [1]
,num = 3
,k - num = 2
,2
不在seen
中-我们将3
添加到{{1} }
步骤3:seen
,seen = [1,3]
,num = 4
。瞧! k - num = 1
已经在1
中,这意味着我们可以对最初的问题给出肯定的答案:源数组中有两个元素,因此它们的总和等于5 ...