Java Program to Find a triplet such that sum of two equals to third element

Last Updated : 23 Jul, 2025

Given an array of integers, you have to find three numbers such that the sum of two elements equals the third element.
Examples:

Input: {5, 32, 1, 7, 10, 50, 19, 21, 2}
Output: 21, 2, 19

Input: {5, 32, 1, 7, 10, 50, 19, 21, 0}
Output: no such triplet exist

Question source: Arcesium Interview Experience | Set 7 (On campus for Internship)

Simple approach:

Run three loops and check if there exists a triplet such that sum of two elements equals the third element.

Below is the implementation of the above approach:

Java
import java.util.*;

public class Main {

    // Utility function for finding triplet in array
    public static void findTriplet(int[] arr, int n)
    {
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                for (int k = j + 1; k < n; k++) {
                    if ((arr[i] + arr[j] == arr[k])
                        || (arr[i] + arr[k] == arr[j])
                        || (arr[j] + arr[k] == arr[i])) {

                        // printing out the first triplet
                        System.out.println(
                            "Numbers are: " + arr[i] + " "
                            + arr[j] + " " + arr[k]);
                        return;
                    }
                }
            }
        }
        // No such triplet is found in array
        System.out.println("No such triplet exists");
    }

    // Driver program
    public static void main(String[] args)
    {
        int[] arr = { 5, 32, 1, 7, 10, 50, 19, 21, 2 };
        int n = arr.length;

        findTriplet(arr, n);
    }
}

Output
Numbers are: 5 7 2

Time complexity: O(n^3)
Auxiliary Space: O(1)
Efficient approach:

The idea is similar to Find a triplet that sum to a given value.

Step-by-step approach:

  • Sort the given array first.
  • Start fixing the greatest element of three from the back and traverse the array to find the other two numbers which sum up to the third element.
  • Take two pointers j(from front) and k(initially i-1) to find the smallest of the two number and from i-1 to find the largest of the two remaining numbers
  • If the addition of both the numbers is still less than A[i], then we need to increase the value of the summation of two numbers, thereby increasing the j pointer, so as to increase the value of A[j] + A[k].
  • If the addition of both the numbers is more than A[i], then we need to decrease the value of the summation of two numbers, thereby decrease the k pointer so as to decrease the overall value of A[j] + A[k].

Below image is a dry run of the above approach:

Below is the implementation of the above approach:

Java
// Java program to find three numbers
// such that sum of two makes the
// third element in array
import java.util.Arrays;

public class GFG 
{
    // Utility function for finding
    // triplet in array
    static void findTriplet(int arr[], int n)
    {
        // Sort the array
        Arrays.sort(arr);

        // For every element in arr check 
        // if a pair exist(in array) whose
        // sum is equal to arr element
        for (int i = n - 1; i >= 0; i--) 
        {
            int j = 0;
            int k = i - 1;
            while (j < k) {
                if (arr[i] == arr[j] + arr[k]) 
                {
                    // Pair found
                    System.out.println("numbers are " + arr[i] + 
                                       " " + arr[j] + " " + arr[k]);
                    return;
                }
                else if (arr[i] > arr[j] + arr[k])
                    j += 1;
                else
                    k -= 1;
            }
        }

        // No such triplet is found in array
        System.out.println("No such triplet exists");
    }

    // Driver code
    public static void main(String args[])
    {
        int arr[] = {5, 32, 1, 7, 10, 
                     50, 19, 21, 2};
        int n = arr.length;
        findTriplet(arr, n);
    }
}
// This code is contributed by Sumit Ghosh

Output
numbers are 21 2 19

Time complexity: O(N^2) 
Auxiliary Space: O(1) as no extra space has been used.

Java Program to Find a triplet such that sum of two equals to third element using Binary Search:

  1. Sort the given array.
  2. Start a nested loop, fixing the first element i(from 0 to n-1) and moving the other one j (from i+1 to n-1).
  3. Take the sum of both the elements and search it in the remaining array using Binary Search.

Below is the implementation of the above approach:

Java
// Java program to find three numbers 
// such that sum of two makes the 
// third element in array 
import java.util.*; 

class GFG{ 

// Function to perform binary search 
static boolean search(int sum, int start, 
                    int end, int arr[]) 
{ 
    while (start <= end) 
    { 
        int mid = (start + end) / 2; 
        if (arr[mid] == sum) 
        { 
            return true; 
        } 
        else if (arr[mid] > sum) 
        { 
            end = mid - 1; 
        } 
        else
        { 
            start = mid + 1; 
        } 
    } 
    return false; 
} 

// Function to find the triplets 
static void findTriplet(int arr[], int n) 
{ 
    
    // Sorting the array 
    Arrays.sort(arr); 

    // Initialising nested loops 
    for(int i = 0; i < n; i++) 
    { 
        for(int j = i + 1; j < n; j++) 
        { 
            
            // Finding the sum of the numbers 
            if (search((arr[i] + arr[j]), j, n - 1, arr)) 
            { 
                
                // Printing out the first triplet 
                System.out.print("Numbers are: " + arr[i] + " " + 
                                arr[j] + " " + (arr[i] + arr[j])); 
                return; 
            } 
        } 
    } 
    
    // If no such triplets are found 
    System.out.print("No such numbers exist"); 
} 

// Driver code 
public static void main(String args[]) 
{ 
    int arr[] = { 5, 32, 1, 7, 10, 50, 19, 21, 2 }; 
    int n = arr.length; 
    
    findTriplet(arr, n); 
} 
} 

// This code is contributed by target_2

Output
Numbers are: 2 5 7

Time Complexity: O(N^2*log N)
Auxiliary Space: O(1)

Please refer complete article on Find a triplet such that sum of two equals to third element for more details!

Comment