【发布时间】:2019-06-11 05:27:50
【问题描述】:
如果给你一个列表
numList = [1,2,3,4,5,6,7]
你被要求找出三个和的个数加到一个特定的数上
target = 10
你怎么能想出答案?
例如:[1,3,6], [1,2,7], [2,3,5], [1,4,5]的组合
将导致返回值4。
我知道如何使用基于散列的函数来使用下面的代码为解决方案提供一个三和,但我不确定如何添加所有唯一的三和解决方案。
def find3Numbers(A,arr_size,sum):
for i in range(0,arr_size-1):
#Find pair in subarray A[i+1..n-1]
# with sum equal to sum - A[i]
s = set()
curr_sum = sum - A[i]
for j in range(i+1,arr_size):
if (curr_sum - A[j]) in s:
print("Triplet is", A[i],
", ", A[j], ", ", curr_sum-A[j])
return True
s.add(A[j])
return False
【问题讨论】:
-
看起来像是一个家庭作业问题,但这里想到了
itertools.combinations... -
注意:使用隐藏python内置类型或函数的变量或参数名称是一个坏主意(例如,一个名为
sum的参数)。
标签: python python-3.x list hash