Given an unsorted array arr, the task is to find the count the distinct triplets in which the sum of any two elements is the third element.
Examples:
Input: arr[] = {1, 3, 4, 15, 19}
Output: 2
Explanation:
In the given array there are two triplets such that sum of the any two element is equal to the third element: {{1, 3, 4}, {4, 15, 19}}Input: arr[] = {7, 2, 5, 4, 3, 6, 1, 9, 10, 12}
Output: 18
Approach:
 Sort the given array
 Create a Hash map for the array to check that a particular element is present or not.
 Iterate over the Array with two Loops to select any two elements at different positions and check that sum of those two elements is present in the hash map in O(1) time.
 If the Sum of the two element is present in the hash map then increment the count of the triplets.
Below is the implementation of the above approach:
// C++ Implementation to find the // Count the triplets in which sum // of two elements is the third element #include <bits/stdc++.h> using namespace std;
// Function to find the count // the triplets in which sum // of two elements is the third element int triplets(vector< int >arr)
{ // Dictionary to check a element is
// present or not in array
map< int , int > k;
map<pair< int , int >, int > mpp;
// List to check for
// duplicates of Triplets
vector<vector< int >> ssd;
// Set initial count to zero
int count = 0;
// Sort the array
sort(arr.begin(),arr.end());
int i = 0;
while (i < arr.size())
{
// Add all the values as key
// value pairs to the dictionary
if (k.find(arr[i]) == k.end())
k[arr[i]] = 1;
i += 1;
}
// Loop to choose two elements
int j = 0;
while (j < arr.size()  1)
{
int q = j + 1;
while (q < arr.size())
{
// Check for the sum and duplicate
if ( k.find(arr[j] + arr[q]) != k.end() and
mpp[{arr[j], arr[q]}] != arr[j] + arr[q])
{
count += 1;
ssd.push_back({arr[j], arr[q], arr[j] + arr[q]});
mpp[{arr[j], arr[q]}] = arr[j] + arr[q];
}
q += 1;
}
j += 1;
}
return count;
} // Driver Code int main()
{ vector< int >arr = {7, 2, 5, 4, 3, 6, 1, 9, 10, 12};
int count = triplets(arr);
printf ( "%d" ,count);
return 0;
} // This code is contributed by mohit kumar 29 
# Python3 Implementation to find the # Count the triplets in which sum # of two elements is the third element # Function to find the count # the triplets in which sum # of two elements is the third element def triplets(arr):
# Dictionary to check a element is
# present or not in array
k = set ()
# List to check for
# duplicates of Triplets
ssd = []
# Set initial count to zero
count = 0
# Sort the array
arr.sort()
i = 0
while i < len (arr):
# Add all the values as key
# value pairs to the dictionary
if arr[i] not in k:
k.add(arr[i])
i + = 1
# Loop to choose two elements
j = 0
while j < len (arr)  1 :
q = j + 1
while q < len (arr):
# Check for the sum and duplicate
if arr[j] + arr[q] in k and \
[arr[j], arr[q], arr[j] + arr[q]] not in ssd:
count + = 1
ssd.append([arr[j], arr[q], arr[j] + arr[q]])
q + = 1
j + = 1
return count
# Driver Code if __name__ = = "__main__" :
arr = [ 7 , 2 , 5 , 4 , 3 , 6 , 1 , 9 , 10 , 12 ]
count = triplets(arr)
print (count)

18
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a studentfriendly price and become industry ready.
Recommended Posts:
 Count triplets such that sum of any two number is equal to third  Set 2
 Find a triplet such that sum of two equals to third element
 Count Triplets such that one of the numbers can be written as sum of the other two
 Split array to three subarrays such that sum of first and third subarray is equal and maximum
 Third largest element in an array of distinct elements
 Merging elements of two different arrays alternatively in third array
 Choose two elements from the given array such that their sum is not present in any of the arrays
 Derive a MultiSet from given Array such that sum is > P and removing any element makes sum < P
 Count of triplets of numbers 1 to N such that middle element is always largest
 Check if each element of an Array is the Sum of any two elements of another Array
 Count triplets in an array such that i<j<k and a[j]  a[i] = a[k]  a[j] = D
 Count of triplets (a, b, c) in the Array such that a divides b and b divides c
 Count of triplets in an Array (i, j, k) such that i < j < k and a[k] < a[i] < a[j]
 Count of triplets in an Array such that A[i] * A[j] = A[k] and i < j < k
 Rearrange array to maximize count of triplets (i, j, k) such that arr[i] > arr[j] < arr[k] and i < j < k
 Largest possible Subset from an Array such that no element is K times any other element in the Subset
 Maximize sum of array by reducing array elements to contain no triplets (i, j, k) where a[i] < a[j] and a[i] < a[k] and j <i < k
 Find maximum sum of triplets in an array such than i < j < k and a[i] < a[j] < a[k]
 Find the first, second and third minimum elements in an array
 Maximum number of unique Triplets such that each element is selected only once
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : mohit kumar 29