使用二进制搜索计算累加到给定值的三元组

时间:2018-03-31 17:48:39

标签: java algorithm binary-search

是否有可能解决此问题“查找总和为给定值的三元组”https://www.geeksforgeeks.org/find-a-triplet-that-sum-to-a-given-value/

使用二分搜索?而不是找到三胞胎,我们会计算它们并打印出来。我知道有不同的方法来解决它,例如使用3 for循环,HashMaps,LinkList等,但我想知道是否可以使用二进制搜索。

提前致谢,

1 个答案:

答案 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