是否有可能解决此问题“查找总和为给定值的三元组”https://www.geeksforgeeks.org/find-a-triplet-that-sum-to-a-given-value/
使用二分搜索?而不是找到三胞胎,我们会计算它们并打印出来。我知道有不同的方法来解决它,例如使用3 for循环,HashMaps,LinkList等,但我想知道是否可以使用二进制搜索。
提前致谢,
答案 0 :(得分:0)
在对输入数组进行排序后可以使用二进制搜索,如下所示:
def find3Numbers(A, arr_size, sum):
count = 0
A.sort()
for i in range(0, arr_size-1):
for j in range(i + 1, arr_size):
needed_3rd_num = sum - A[i] - A[j]
if(binarySearch(A, needed_3rd_num, start_index=j + 1)):
print "found numbers : " + A[i] + " " + A[j] + " " + needed_3rd_num
count = count + 1
return count