Dada una array y un valor, encuentre si hay un triplete en la array cuya suma es igual al valor dado. Si hay tal triplete presente en la array, imprima el triplete y devuelva verdadero. De lo contrario, devuelve falso.
Ejemplos:
C++
#include <bits/stdc++.h> using namespace std; // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet bool find3Numbers(int A[], int arr_size, int sum) { // Fix the first element as A[i] for (int i = 0; i < arr_size - 2; i++) { // Fix the second element as A[j] for (int j = i + 1; j < arr_size - 1; j++) { // Now look for the third number for (int k = j + 1; k < arr_size; k++) { if (A[i] + A[j] + A[k] == sum) { cout << "Triplet is " << A[i] << ", " << A[j] << ", " << A[k]; return true; } } } } // If we reach here, then no triplet was found return false; } /* Driver code */ int main() { int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = sizeof(A) / sizeof(A[0]); find3Numbers(A, arr_size, sum); return 0; } // This is code is contributed by rathbhupendra
C
#include <stdio.h> // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet bool find3Numbers(int A[], int arr_size, int sum) { int l, r; // Fix the first element as A[i] for (int i = 0; i < arr_size - 2; i++) { // Fix the second element as A[j] for (int j = i + 1; j < arr_size - 1; j++) { // Now look for the third number for (int k = j + 1; k < arr_size; k++) { if (A[i] + A[j] + A[k] == sum) { printf("Triplet is %d, %d, %d", A[i], A[j], A[k]); return true; } } } } // If we reach here, then no triplet was found return false; } /* Driver program to test above function */ int main() { int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = sizeof(A) / sizeof(A[0]); find3Numbers(A, arr_size, sum); return 0; }
Java
// Java program to find a triplet class FindTriplet { // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet boolean find3Numbers(int A[], int arr_size, int sum) { int l, r; // Fix the first element as A[i] for (int i = 0; i < arr_size - 2; i++) { // Fix the second element as A[j] for (int j = i + 1; j < arr_size - 1; j++) { // Now look for the third number for (int k = j + 1; k < arr_size; k++) { if (A[i] + A[j] + A[k] == sum) { System.out.print("Triplet is " + A[i] + ", " + A[j] + ", " + A[k]); return true; } } } } // If we reach here, then no triplet was found return false; } // Driver program to test above functions public static void main(String[] args) { FindTriplet triplet = new FindTriplet(); int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = A.length; triplet.find3Numbers(A, arr_size, sum); } }
Python3
# Python3 program to find a triplet # that sum to a given value # returns true if there is triplet with # sum equal to 'sum' present in A[]. # Also, prints the triplet def find3Numbers(A, arr_size, sum): # Fix the first element as A[i] for i in range( 0, arr_size-2): # Fix the second element as A[j] for j in range(i + 1, arr_size-1): # Now look for the third number for k in range(j + 1, arr_size): if A[i] + A[j] + A[k] == sum: print("Triplet is", A[i], ", ", A[j], ", ", A[k]) return True # If we reach here, then no # triplet was found return False # Driver program to test above function A = [1, 4, 45, 6, 10, 8] sum = 22 arr_size = len(A) find3Numbers(A, arr_size, sum) # This code is contributed by Smitha Dinesh Semwal
C#
// C# program to find a triplet // that sum to a given value using System; class GFG { // returns true if there is // triplet with sum equal // to 'sum' present in A[]. // Also, prints the triplet static bool find3Numbers(int[] A, int arr_size, int sum) { // Fix the first // element as A[i] for (int i = 0; i < arr_size - 2; i++) { // Fix the second // element as A[j] for (int j = i + 1; j < arr_size - 1; j++) { // Now look for // the third number for (int k = j + 1; k < arr_size; k++) { if (A[i] + A[j] + A[k] == sum) { Console.WriteLine("Triplet is " + A[i] + ", " + A[j] + ", " + A[k]); return true; } } } } // If we reach here, // then no triplet was found return false; } // Driver Code static public void Main() { int[] A = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = A.Length; find3Numbers(A, arr_size, sum); } } // This code is contributed by m_kit
PHP
<?php // PHP program to find a triplet // that sum to a given value // returns true if there is // triplet with sum equal to // 'sum' present in A[]. // Also, prints the triplet function find3Numbers($A, $arr_size, $sum) { $l; $r; // Fix the first // element as A[i] for ($i = 0; $i < $arr_size - 2; $i++) { // Fix the second // element as A[j] for ($j = $i + 1; $j < $arr_size - 1; $j++) { // Now look for the // third number for ($k = $j + 1; $k < $arr_size; $k++) { if ($A[$i] + $A[$j] + $A[$k] == $sum) { echo "Triplet is", " ", $A[$i], ", ", $A[$j], ", ", $A[$k]; return true; } } } } // If we reach here, then // no triplet was found return false; } // Driver Code $A = array(1, 4, 45, 6, 10, 8); $sum = 22; $arr_size = sizeof($A); find3Numbers($A, $arr_size, $sum); // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to find a triplet // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet function find3Numbers(A, arr_size, sum) { let l, r; // Fix the first element as A[i] for (let i = 0; i < arr_size - 2; i++) { // Fix the second element as A[j] for (let j = i + 1; j < arr_size - 1; j++) { // Now look for the third number for (let k = j + 1; k < arr_size; k++) { if (A[i] + A[j] + A[k] == sum) { document.write("Triplet is " + A[i] + ", " + A[j] + ", " + A[k]); return true; } } } } // If we reach here, then no triplet was found return false; } /* Driver code */ let A = [ 1, 4, 45, 6, 10, 8 ]; let sum = 22; let arr_size = A.length; find3Numbers(A, arr_size, sum); // This code is contributed by Mayank Tyagi </script>
C++
// C++ program to find a triplet #include <bits/stdc++.h> using namespace std; // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet bool find3Numbers(int A[], int arr_size, int sum) { int l, r; /* Sort the elements */ sort(A, A + arr_size); /* Now fix the first element one by one and find the other two elements */ for (int i = 0; i < arr_size - 2; i++) { // To find the other two elements, start two index // variables from two corners of the array and move // them toward each other l = i + 1; // index of the first element in the // remaining elements r = arr_size - 1; // index of the last element while (l < r) { if (A[i] + A[l] + A[r] == sum) { printf("Triplet is %d, %d, %d", A[i], A[l],A[r]); return true; } else if (A[i] + A[l] + A[r] < sum) l++; else // A[i] + A[l] + A[r] > sum r--; } } // If we reach here, then no triplet was found return false; } /* Driver program to test above function */ int main() { int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = sizeof(A) / sizeof(A[0]); find3Numbers(A, arr_size, sum); return 0; } // This code is contributed by Aditya Kumar (adityakumar129)
C
// C program to find a triplet #include <stdio.h> #include <stdlib.h> #include <stdbool.h> int cmpfunc(const void* a, const void* b) { return (*(int*)a - *(int*)b); } // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet bool find3Numbers(int A[], int arr_size, int sum) { int l, r; /* Sort the elements */ qsort(A, arr_size, sizeof(int), cmpfunc); /* Now fix the first element one by one and find the other two elements */ for (int i = 0; i < arr_size - 2; i++) { // To find the other two elements, start two index // variables from two corners of the array and move // them toward each other l = i + 1; // index of the first element in the // remaining elements r = arr_size - 1; // index of the last element while (l < r) { if (A[i] + A[l] + A[r] == sum) { printf("Triplet is %d, %d, %d", A[i], A[l], A[r]); return true; } else if (A[i] + A[l] + A[r] < sum) l++; else // A[i] + A[l] + A[r] > sum r--; } } // If we reach here, then no triplet was found return false; } /* Driver program to test above function */ int main() { int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = sizeof(A) / sizeof(A[0]); find3Numbers(A, arr_size, sum); return 0; } // This code is contributed by Aditya Kumar (adityakumar129)
Java
// Java program to find a triplet class FindTriplet { // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet boolean find3Numbers(int A[], int arr_size, int sum) { int l, r; /* Sort the elements */ quickSort(A, 0, arr_size - 1); /* Now fix the first element one by one and find the other two elements */ for (int i = 0; i < arr_size - 2; i++) { // To find the other two elements, start two // index variables from two corners of the array // and move them toward each other l = i + 1; // index of the first element in the // remaining elements r = arr_size - 1; // index of the last element while (l < r) { if (A[i] + A[l] + A[r] == sum) { System.out.print("Triplet is " + A[i] + ", " + A[l] + ", " + A[r]); return true; } else if (A[i] + A[l] + A[r] < sum) l++; else // A[i] + A[l] + A[r] > sum r--; } } // If we reach here, then no triplet was found return false; } int partition(int A[], int si, int ei) { int x = A[ei]; int i = (si - 1); int j; for (j = si; j <= ei - 1; j++) { if (A[j] <= x) { i++; int temp = A[i]; A[i] = A[j]; A[j] = temp; } } int temp = A[i + 1]; A[i + 1] = A[ei]; A[ei] = temp; return (i + 1); } /* Implementation of Quick Sort A[] --> Array to be sorted si --> Starting index ei --> Ending index */ void quickSort(int A[], int si, int ei) { int pi; /* Partitioning index */ if (si < ei) { pi = partition(A, si, ei); quickSort(A, si, pi - 1); quickSort(A, pi + 1, ei); } } // Driver program to test above functions public static void main(String[] args) { FindTriplet triplet = new FindTriplet(); int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = A.length; triplet.find3Numbers(A, arr_size, sum); } }
Python3
# Python3 program to find a triplet # returns true if there is triplet # with sum equal to 'sum' present # in A[]. Also, prints the triplet def find3Numbers(A, arr_size, sum): # Sort the elements A.sort() # Now fix the first element # one by one and find the # other two elements for i in range(0, arr_size-2): # To find the other two elements, # start two index variables from # two corners of the array and # move them toward each other # index of the first element # in the remaining elements l = i + 1 # index of the last element r = arr_size-1 while (l < r): if( A[i] + A[l] + A[r] == sum): print("Triplet is", A[i], ', ', A[l], ', ', A[r]); return True elif (A[i] + A[l] + A[r] < sum): l += 1 else: # A[i] + A[l] + A[r] > sum r -= 1 # If we reach here, then # no triplet was found return False # Driver program to test above function A = [1, 4, 45, 6, 10, 8] sum = 22 arr_size = len(A) find3Numbers(A, arr_size, sum) # This is contributed by Smitha Dinesh Semwal
C#
// C# program to find a triplet using System; class GFG { // returns true if there is triplet // with sum equal to 'sum' present // in A[]. Also, prints the triplet bool find3Numbers(int[] A, int arr_size, int sum) { int l, r; /* Sort the elements */ quickSort(A, 0, arr_size - 1); /* Now fix the first element one by one and find the other two elements */ for (int i = 0; i < arr_size - 2; i++) { // To find the other two elements, // start two index variables from // two corners of the array and // move them toward each other l = i + 1; // index of the first element // in the remaining elements r = arr_size - 1; // index of the last element while (l < r) { if (A[i] + A[l] + A[r] == sum) { Console.Write("Triplet is " + A[i] + ", " + A[l] + ", " + A[r]); return true; } else if (A[i] + A[l] + A[r] < sum) l++; else // A[i] + A[l] + A[r] > sum r--; } } // If we reach here, then // no triplet was found return false; } int partition(int[] A, int si, int ei) { int x = A[ei]; int i = (si - 1); int j; for (j = si; j <= ei - 1; j++) { if (A[j] <= x) { i++; int temp = A[i]; A[i] = A[j]; A[j] = temp; } } int temp1 = A[i + 1]; A[i + 1] = A[ei]; A[ei] = temp1; return (i + 1); } /* Implementation of Quick Sort A[] --> Array to be sorted si --> Starting index ei --> Ending index */ void quickSort(int[] A, int si, int ei) { int pi; /* Partitioning index */ if (si < ei) { pi = partition(A, si, ei); quickSort(A, si, pi - 1); quickSort(A, pi + 1, ei); } } // Driver Code static void Main() { GFG triplet = new GFG(); int[] A = new int[] { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = A.Length; triplet.find3Numbers(A, arr_size, sum); } } // This code is contributed by mits
PHP
<?php // PHP program to find a triplet // returns true if there is // triplet with sum equal to // 'sum' present in A[]. Also, // prints the triplet function find3Numbers($A, $arr_size, $sum) { $l; $r; /* Sort the elements */ sort($A); /* Now fix the first element one by one and find the other two elements */ for ($i = 0; $i < $arr_size - 2; $i++) { // To find the other two elements, // start two index variables from // two corners of the array and // move them toward each other $l = $i + 1; // index of the first element // in the remaining elements // index of the last element $r = $arr_size - 1; while ($l < $r) { if ($A[$i] + $A[$l] + $A[$r] == $sum) { echo "Triplet is ", $A[$i], " ", $A[$l], " ", $A[$r], "\n"; return true; } else if ($A[$i] + $A[$l] + $A[$r] < $sum) $l++; else // A[i] + A[l] + A[r] > sum $r--; } } // If we reach here, then // no triplet was found return false; } // Driver Code $A = array (1, 4, 45, 6, 10, 8); $sum = 22; $arr_size = sizeof($A); find3Numbers($A, $arr_size, $sum); // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to find a triplet // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet function find3Numbers(A, arr_size, sum) { let l, r; /* Sort the elements */ A.sort((a,b) => a-b); /* Now fix the first element one by one and find the other two elements */ for (let i = 0; i < arr_size - 2; i++) { // To find the other two // elements, start two index // variables from two corners of // the array and move // them toward each other // index of the first element in the l = i + 1; // remaining elements // index of the last element r = arr_size - 1; while (l < r) { if (A[i] + A[l] + A[r] == sum) { document.write("Triplet is " + A[i] + ", " + A[l] + ", " + A[r]); return true; } else if (A[i] + A[l] + A[r] < sum) l++; else // A[i] + A[l] + A[r] > sum r--; } } // If we reach here, then no triplet was found return false; } /* Driver program to test above function */ let A = [ 1, 4, 45, 6, 10, 8 ]; let sum = 22; let arr_size = A.length; find3Numbers(A, arr_size, sum); // This code is contributed by Mayank Tyagi </script>
C++
// C++ program to find a triplet using Hashing #include <bits/stdc++.h> using namespace std; // returns true if there is triplet with sum equal // to 'sum' present in A[]. Also, prints the triplet bool find3Numbers(int A[], int arr_size, int sum) { // Fix the first element as A[i] for (int i = 0; i < arr_size - 2; i++) { // Find pair in subarray A[i+1..n-1] // with sum equal to sum - A[i] unordered_set<int> s; int curr_sum = sum - A[i]; for (int j = i + 1; j < arr_size; j++) { if (s.find(curr_sum - A[j]) != s.end()) { printf("Triplet is %d, %d, %d", A[i], A[j], curr_sum - A[j]); return true; } s.insert(A[j]); } } // If we reach here, then no triplet was found return false; } /* Driver program to test above function */ int main() { int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = sizeof(A) / sizeof(A[0]); find3Numbers(A, arr_size, sum); return 0; }
Java
// Java program to find a triplet using Hashing import java.util.*; class GFG { // returns true if there is triplet // with sum equal to 'sum' present // in A[]. Also, prints the triplet static boolean find3Numbers(int A[], int arr_size, int sum) { // Fix the first element as A[i] for (int i = 0; i < arr_size - 2; i++) { // Find pair in subarray A[i+1..n-1] // with sum equal to sum - A[i] HashSet<Integer> s = new HashSet<Integer>(); int curr_sum = sum - A[i]; for (int j = i + 1; j < arr_size; j++) { if (s.contains(curr_sum - A[j])) { System.out.printf("Triplet is %d, %d, %d", A[i], A[j], curr_sum - A[j]); return true; } s.add(A[j]); } } // If we reach here, then no triplet was found return false; } /* Driver code */ public static void main(String[] args) { int A[] = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = A.length; find3Numbers(A, arr_size, sum); } } // This code has been contributed by 29AjayKumar
Python3
# Python3 program to find a triplet using Hashing # returns true if there is triplet with sum equal # to 'sum' present in A[]. Also, prints the triplet 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 # Driver program to test above function A = [1, 4, 45, 6, 10, 8] sum = 22 arr_size = len(A) find3Numbers(A, arr_size, sum) # This is contributed by Yatin gupta
C#
// C# program to find a triplet using Hashing using System; using System.Collections.Generic; public class GFG { // returns true if there is triplet // with sum equal to 'sum' present // in A[]. Also, prints the triplet static bool find3Numbers(int[] A, int arr_size, int sum) { // Fix the first element as A[i] for (int i = 0; i < arr_size - 2; i++) { // Find pair in subarray A[i+1..n-1] // with sum equal to sum - A[i] HashSet<int> s = new HashSet<int>(); int curr_sum = sum - A[i]; for (int j = i + 1; j < arr_size; j++) { if (s.Contains(curr_sum - A[j])) { Console.Write("Triplet is {0}, {1}, {2}", A[i], A[j], curr_sum - A[j]); return true; } s.Add(A[j]); } } // If we reach here, then no triplet was found return false; } /* Driver code */ public static void Main() { int[] A = { 1, 4, 45, 6, 10, 8 }; int sum = 22; int arr_size = A.Length; find3Numbers(A, arr_size, sum); } } /* This code contributed by PrinciRaj1992 */
Javascript
<script> // JavaScript program to find a triplet using Hashing // returns true if there is triplet // with sum equal to 'sum' present // in A[]. Also, prints the triplet function find3Numbers(A,arr_size,sum) { // Fix the first element as A[i] for (let i = 0; i < arr_size - 2; i++) { // Find pair in subarray A[i+1..n-1] // with sum equal to sum - A[i] let s = new Set(); let curr_sum = sum - A[i]; for (let j = i + 1; j < arr_size; j++) { if (s.has(curr_sum - A[j])) { document.write( "Triplet is " +A[i]+", "+A[j]+", "+ (curr_sum - A[j])+"<br>" ); return true; } s.add(A[j]); } } // If we reach here, then no triplet was found return false; } /* Driver code */ let A=[1, 4, 45, 6, 10, 8]; let sum = 22; let arr_size = A.length; find3Numbers(A, arr_size, sum); // This code is contributed by rag2127 </script>
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA