Сегодня (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; } }