有人能告诉我下面的解决方案是否可能“一次性”实现吗?
给定一个数字列表和一个数字k
,返回列表中的任意两个数字加起来是否等于k
。
例如,给定17的
[10,15,3,7]
和k
,返回True
,因为107
是17
奖励:你能一次完成吗?
def verify(list):
for i in range(len(list)):
j = k - list[i]
if j in list:
return True
return False
我想出了两个解决方案。
第一个,我很确定是你被要求的,做所有可能的总和——最坏的情况——只有一次通过:
def verify_2(l,k):
i = 0
j = 0
n = len(l)
while i < n - 1:
j = i + 1
while j < n:
if l[i] + l[j] == k:
return True
j = j + 1
i = i + 1
return False
print(verify_2(l = [10,15,3,7], k = 17)) #RETURNS TRUE
print(verify_2(l = [10,15,3,7], k = 6)) #RETURNS FALSE
另一个效率较低(因为它必须对向量firt进行排序,它至少已经具有n*log(n)
复杂性),并且您必须手动执行另一个过程。这不是你想要的,但因为更容易理解,我也把它留给你:
def verify(l,k):
l.sort()
for i in range(len(l) - 1):
if l[i] + l[i+1] == k:
return True
return False
print(verify(l = [10,15,3,7], k = 17)) #RETURNS TRUE
print(verify(l = [10,15,3,7], k = 6)) #RETURNS FALSE
第一种解决方案比第二种快得多。
关于你的解决方案,我必须告诉你几件事。避免在变量或参数中使用“list”这个词,因为它是Python语言中的一个词,用于将另一个数据类型转换为数据类型“list”(即,如果你有s=“hello”
,并且你做了s=list
,那么你就会得到s有['h'、'e'、'l'、'l'、'o']
。还要记住,函数头下面的所有代码(def…)需要缩进,可以是四个空格、两个空格或一个制表符(否则会出现解释错误)。您还应该注意,在您的解决方案中使用了k
,但它不是一个定义的变量;您应该将其作为参数传递或在函数内部定义,否则无法使用它(建议使用前者,而不是后者)。即使考虑到这一点,您的函数也没有执行文本中要求的操作:它实际上在for循环的每一步从k中减去第i个元素,并在每次迭代中检查减法的结果是否属于列表。
抱歉,伙计们,我发现很难找到你建议的线索的答案,而且解决方案大多是Java。。你能看看另一个提议吗:首先我们创建一份我们的清单。。
def verify(l, K):
for i in range(len(l)):
j = k - l[i]
if j in l:
return True
l = l.pop([i])
return False
非常感谢。
使用itertools组合来获取列表中所有可能的数字对。
from itertools import combinations
li =[10, 15, 3, 7]
k =17
answer = k in (map(sum,combinations(li,2)))
print(answer)
这个问题是在谷歌编程采访中提出的。我想到了两种方法: > 找出长度的所有子序列。这样做时,计算两个元素的和,并检查它是否等于k。如果是,请打印“是”,否则继续搜索。这是一种暴力手段。 按非降序排列数组。然后从数组的右端开始遍历数组。假设我们有一个排序数组,{3,5,7,10},我们希望总和是17。我们将从元素10开始,索引=3,让我们用“j”来表示索引。然后包含当前元素并计算所需的_sum=sum
假设我在两个不同的数据库 数据库中的< code>static表具有如下列: < code>apartments数据库中的< code>static表具有如下列: 我想在不引发任何错误的情况下运行下面的查询。目前,我得到错误,因为列不存在于中。 我尝试的解决方案: 它有效,但是当涉及更多列时,此查询会变得混乱。 我在寻找什么: > < li> 创建一个函数,该函数采用列名和表名,然后执行我在上述查
给定数组 给定特定编号 null
我试图确定数组列表中的数字是否可以被antoher数组列表中的所有数字整除。我下面的代码输出列表中的所有数字,这些数字可以被中的任何除数整除。我想输出列表中所有除数都可以整除的值,而不是它们中的任何一个。例如,如果我有listdiv=[1,2,3,,5,8]和listdivisor=[2,4]。预期的输出应该是8,但此代码输出2和8。 非常感谢。我们将非常感谢您的努力!
假设我有从文件中读取的字符串和整数,并用逗号分隔,我想将它们添加到两个不同的 arrayList 中。 汉堡包,15 奶酪,10 苏打水,15 我该怎么做呢?我最初使用nextLine()将它们添加到一个数组列表中并提取整数并擦除逗号,但这对数组列表不起作用。我还尝试使用nextInt()来获取int,但出现了异常。 我的最终结果将是: 项目=[汉堡包,奶酪,苏打水] 成本= [15,10,15]
嗨,我正在尝试使用 GET statuses/user_timeline 推特 rest api 获取 uni 项目页面的所有推文,但返回的结果小于 51.8K(推文)CNN 页面的限制与 API 说的 3200 条推文不同。所以我手动检查了数据是什么,并且 api 让我获得了我在推文中看到的推文