Сегодня (10–12–2022) мой 55-й день программирования. Сегодня решил одну проблему.

Проблема: сумма троек в массиве

Дан массив arr размера n и целое число X. Найдите, есть ли в массиве тройка, которая в сумме дает заданное целое число X.

Пример 1:

Input:
n = 6, X = 13
arr[] = [1 4 45 6 10 8]
Output:
1
Explanation:
The triplet {1, 4, 8} in 
the array sums up to 13.

Пример 2:

Input:
n = 5, X = 10
arr[] = [1 2 4 3 6]
Output:
1
Explanation:
The triplet {1, 3, 6} in 
the array sums up to 10.

Ваша задача
Вам не нужно ничего читать или печатать. Ваша задача состоит в том, чтобы завершить функцию find3Numbers(), которая принимает массив arr[], размер массива (n) и сумму (X) в качестве входных данных и возвращает True, если существует триплет в массив arr[], который суммируется с X и False в противном случае.

Ожидаемая временная сложность:O(n2)
Ожидаемое вспомогательное пространство:O(1)

Решение (в Java):

class Solution
{
    //Function to find if there exists a triplet in the 
    //array A[] which sums up to X.
    public static boolean find3Numbers(int A[], int n, int X) { 
    
      
       for( int i=0; i<n-3; i++){
          Set<Integer> hs=new HashSet<>();
          for(int j=i+1; j<n; j++){
              if(hs.contains(X-(A[i]+A[j])))
              return true;
              
              else
              hs.add(A[j]);
          }
       }
    return false;
    }
}