2024-06-17 18:03:46 发布
网友
有人能告诉我下面的解决方案“一次通过”是否可行吗
给定一个数字列表和一个数字k,返回列表中的任意两个数字加起来是否为k
k
比如说,, 给定{}的{}和{},返回{},因为{}是{}
奖励:你能一次完成吗
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)复杂性),并且您必须手动执行另一个过程。这不是你所要求的,但因为更容易理解,我也把它留给你:
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),那么您就得到了s中有['h','e','l','l','o'])。还要记住,函数头(def…)下面的所有代码都需要缩进,可以是四个空格、两个空格或一个制表符(否则会出现解释错误)。您还应该注意,在您的解决方案中使用了k,但它不是一个已定义的变量;您应该将其作为参数传递或在函数内部定义,否则无法使用它(建议使用前者,而不是后者)。即使考虑到这一点,您的函数也没有执行文本中要求的操作:它实际上在for循环的每一步从k中减去第i个元素,并在每次迭代中检查减法的结果是否属于列表
s = "hello"
s = list(s)
['h','e','l','l','o']
使用itertools组合来获取列表中所有可能的数字对
from itertools import combinations li =[10, 15, 3, 7] k =17 answer = k in (map(sum,combinations(li,2))) print(answer)
我很抱歉,伙计们,我发现很难找到你建议的线索的答案,而且解决方案大多是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
谢谢大家!
我想出了两个解决办法
第一个,我很确定就是你被要求的,只需一次通过,就可以完成所有可能的总和——最坏的情况:
另一个效率较低(因为它必须对向量firt进行排序,它至少已经具有
n*log(n)
复杂性),并且您必须手动执行另一个过程。这不是你所要求的,但因为更容易理解,我也把它留给你:第一种解决方案比第二种快得多
关于你的解决方案,我必须告诉你几件事。避免使用单词“list”作为变量或参数,因为它是Python语言中的一个单词,用于将另一个数据类型转换为数据类型“list”(即,如果您有
s = "hello"
,并且您有s = list(s)
,那么您就得到了s中有['h','e','l','l','o']
)。还要记住,函数头(def…)下面的所有代码都需要缩进,可以是四个空格、两个空格或一个制表符(否则会出现解释错误)。您还应该注意,在您的解决方案中使用了k
,但它不是一个已定义的变量;您应该将其作为参数传递或在函数内部定义,否则无法使用它(建议使用前者,而不是后者)。即使考虑到这一点,您的函数也没有执行文本中要求的操作:它实际上在for循环的每一步从k中减去第i个元素,并在每次迭代中检查减法的结果是否属于列表使用itertools组合来获取列表中所有可能的数字对
我很抱歉,伙计们,我发现很难找到你建议的线索的答案,而且解决方案大多是Java。。你能看一下另一个提议吗:首先,我们创建一份我们的清单
谢谢大家!
相关问题 更多 >
编程相关推荐