假设我有
list = [9, 4, 1, 8, 6]
我给定的值是-
n = 14
我希望输出是一个列表,其中元素的总和等于给定值的元素的数量最少,这将是-
output = [8, 6]
谁能告诉我如何在Python中做到这一点?我仅限于 numpy ,并且无法导入任何其他模块。
我在javascript中找到了一个实现,但在python-https://stackoverflow.com/a/55771349/12499855
中却无法实现答案 0 :(得分:1)
此代码似乎可以满足您的需求。这可能不是最有效的方法,但是如果没有更多信息,这就是我能做到的最好的方法!
list1 = [9, 4, 1, 8, 6]
list1.sort()
n = 14
output = list()
for num in list1:
for test in list1:
if num + test == n:
output = [num, test]
break
if output:
break
print(output)
这个想法是先按升序对列表进行排序,然后遍历它。在循环内部,我们再次循环遍历同一列表以查找匹配的第一个匹配项。找到匹配项后,我们将退出两个循环。