下面的代码块是一个问题的解决方案,在这个问题中,您需要找到数组中两个元素之和等于定义的整数(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
1条答案
按热度按时间oxosxuxt1#
1.Python 皮 ( 锯齿 状 断裂 ? )
for i in range(x)
是 Python 在 0 到 x - 1 范围 内 迭代 的 一 种 方式 。 在 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
添加 到seen
步骤 3 :
seen = [1,3]
,num = 4
,k - num = 1
。 瞧 !1
已经 在seen
中 , 这 意味 着 我们 可以 对 初始 问题 给出 肯定 的 答案 :源 数组 中 有 两 个 元素 , 因此 它们 的 和 等于 5 ...