Это решение, основанное на хешировании, которое имеет сложность O (n). Программа Python3 для нахождения триплета с использованием хеширования возвращает true, если в A [] есть триплет с суммой, равной 'sum'. Также печатает тройку
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