Dada una array de enteros y un número ‘suma’, imprime todos los pares en la array cuya suma es igual a ‘suma’.
Examples : Input : arr[] = {1, 5, 7, -1, 5}, sum = 6 Output : (1, 5) (7, -1) (1, 5) Input : arr[] = {2, 5, 17, -1}, sum = 7 Output : (2, 5)
Una solución simple es atravesar cada elemento y verificar si hay otro número en la array que se pueda agregar para dar la suma.
C++
// C++ implementation of simple method to // find print pairs with given sum. #include <bits/stdc++.h> using namespace std; // Returns number of pairs in arr[0..n-1] // with sum equal to 'sum' int printPairs(int arr[], int n, int sum) { int count = 0; // Initialize result // Consider all possible pairs and check // their sums for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) if (arr[i] + arr[j] == sum) cout << "(" << arr[i] << ", " << arr[j] << ")" << endl; } // Driver function to test the above function int main() { int arr[] = { 1, 5, 7, -1, 5 }; int n = sizeof(arr) / sizeof(arr[0]); int sum = 6; printPairs(arr, n, sum); return 0; }
Java
// Java implementation of // simple method to find // print pairs with given sum. class GFG { // Returns number of pairs // in arr[0..n-1] with sum // equal to 'sum' static void printPairs(int arr[], int n, int sum) { // int count = 0; // Consider all possible pairs // and check their sums for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) if (arr[i] + arr[j] == sum) System.out.println("(" + arr[i] + ", " + arr[j] + ")"); } // Driver Code public static void main(String[] arg) { int arr[] = { 1, 5, 7, -1, 5 }; int n = arr.length; int sum = 6; printPairs(arr, n, sum); } } // This code is contributed // by Smitha
Python3
# Python 3 implementation # of simple method to find # print pairs with given sum. # Returns number of pairs # in arr[0..n-1] with sum # equal to 'sum' def printPairs(arr, n, sum): # count = 0 # Consider all possible # pairs and check their sums for i in range(0, n ): for j in range(i + 1, n ): if (arr[i] + arr[j] == sum): print("(", arr[i], ", ", arr[j], ")", sep = "") # Driver Code arr = [1, 5, 7, -1, 5] n = len(arr) sum = 6 printPairs(arr, n, sum) # This code is contributed # by Smitha
C#
// C# implementation of simple // method to find print pairs // with given sum. using System; class GFG { // Returns number of pairs // in arr[0..n-1] with sum // equal to 'sum' static void printPairs(int[] arr, int n, int sum) { // int count = 0; // Consider all possible pairs // and check their sums for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) if (arr[i] + arr[j] == sum) Console.Write("(" + arr[i] + ", " + arr[j] + ")" + "\n"); } // Driver Code public static void Main() { int[] arr = { 1, 5, 7, -1, 5 }; int n = arr.Length; int sum = 6; printPairs(arr, n, sum); } } // This code is contributed // by Smitha
PHP
<?php // PHP implementation of simple // method to find print pairs // with given sum. // Returns number of pairs in // arr[0..n-1] with sum equal // to 'sum' function printPairs($arr, $n, $sum) { // Initialize result $count = 0; // Consider all possible // pairs and check their sums for ($i = 0; $i < $n; $i++) for ( $j = $i + 1; $j < $n; $j++) if ($arr[$i] + $arr[$j] == $sum) echo "(", $arr[$i], ", ", $arr[$j], ")", "\n"; } // Driver Code $arr = array (1, 5, 7, -1, 5); $n = sizeof($arr); $sum = 6; printPairs($arr, $n, $sum); // This code is contributed by m_kit ?>
Javascript
<script> // JavaScript implementation of simple method to // find print pairs with given sum. // Returns number of pairs in arr[0..n-1] // with sum equal to 'sum' function printPairs(arr, n, sum) { let count = 0; // Initialize result // Consider all possible pairs and check // their sums for (let i = 0; i < n; i++) for (let j = i + 1; j < n; j++) if (arr[i] + arr[j] == sum) document.write("(" + arr[i] + ", " + arr[j] + ")" + "<br>"); } // Driver function to test the above function let arr = [ 1, 5, 7, -1, 5 ]; let n = arr.length; let sum = 6; printPairs(arr, n, sum); // This code is contributed by Surbhi Tyagi </script>
Producción :
(1, 5) (1, 5) (7, -1)
Método 2 (Usar hashing) .
Creamos una tabla hash vacía. Ahora recorremos la array y buscamos pares en la tabla hash. Si se encuentra un elemento coincidente, imprimimos el par un número de veces igual al número de ocurrencias del elemento coincidente.
Tenga en cuenta que el peor caso de complejidad temporal de esta solución es O(c + n) donde c es el recuento de pares con una suma dada.
C++
// C++ implementation of simple method to // find count of pairs with given sum. #include <bits/stdc++.h> using namespace std; // Returns number of pairs in arr[0..n-1] // with sum equal to 'sum' void printPairs(int arr[], int n, int sum) { // Store counts of all elements in map m unordered_map<int, int> m; // Traverse through all elements for (int i = 0; i < n; i++) { // Search if a pair can be formed with // arr[i]. int rem = sum - arr[i]; if (m.find(rem) != m.end()) { int count = m[rem]; for (int j = 0; j < count; j++) cout << "(" << rem << ", " << arr[i] << ")" << endl; } m[arr[i]]++; } } // Driver function to test the above function int main() { int arr[] = { 1, 5, 7, -1, 5 }; int n = sizeof(arr) / sizeof(arr[0]); int sum = 6; printPairs(arr, n, sum); return 0; }
Java
// Java implementation of simple method to // find count of pairs with given sum. import java.util.*; class GFG{ // Returns number of pairs in arr[0..n-1] // with sum equal to 'sum' static void printPairs(int arr[], int n, int sum) { // Store counts of all elements in map m HashMap<Integer, Integer> mp = new HashMap<Integer, Integer>(); // Traverse through all elements for(int i = 0; i < n; i++) { // Search if a pair can be formed with // arr[i]. int rem = sum - arr[i]; if (mp.containsKey(rem)) { int count = mp.get(rem); for(int j = 0; j < count; j++) System.out.print("(" + rem + ", " + arr[i] + ")" + "\n"); } if (mp.containsKey(arr[i])) { mp.put(arr[i], mp.get(arr[i]) + 1); } else { mp.put(arr[i], 1); } } } // Driver code public static void main(String[] args) { int arr[] = { 1, 5, 7, -1, 5 }; int n = arr.length; int sum = 6; printPairs(arr, n, sum); } } // This code is contributed by Princi Singh
Python3
# Python3 implementation of simple method to # find count of pairs with given sum. # Returns number of pairs in arr[0..n-1] # with sum equal to 'sum' def printPairs(arr, n, sum): # Store counts of all elements # in a dictionary mydict = dict() # Traverse through all the elements for i in range(n): # Search if a pair can be # formed with arr[i] temp = sum - arr[i] if temp in mydict: count = mydict[temp] for j in range(count): print("(", temp, ", ", arr[i], ")", sep = "", end = '\n') if arr[i] in mydict: mydict[arr[i]] += 1 else: mydict[arr[i]] = 1 # Driver code if __name__ == '__main__': arr = [ 1, 5, 7, -1, 5 ] n = len(arr) sum = 6 printPairs(arr, n, sum) # This code is contributed by MuskanKalra1
C#
// C# implementation of simple method to // find count of pairs with given sum. using System; using System.Collections; using System.Collections.Generic; class GFG{ // Returns number of pairs in arr[0..n-1] // with sum equal to 'sum' static void printPairs(int []arr, int n, int sum) { // Store counts of all elements in map m Dictionary<int, int> m = new Dictionary<int, int>(); // Traverse through all elements for(int i = 0; i < n; i++) { // Search if a pair can be formed with // arr[i]. int rem = sum - arr[i]; if (m.ContainsKey(rem)) { int count = m[rem]; for(int j = 0; j < count; j++) { Console.Write("(" + rem + ", " + arr[i] + ")" + "\n"); } } if (m.ContainsKey(arr[i])) { m[arr[i]]++; } else { m[arr[i]] = 1; } } } // Driver code public static void Main(string[] args) { int []arr = { 1, 5, 7, -1, 5 }; int n = arr.Length; int sum = 6; printPairs(arr, n, sum); } } // This code is contributed by rutvik_56
Javascript
<script> // JavaScript implementation of simple method to // find count of pairs with given sum. // Returns number of pairs in arr[0..n-1] // with sum equal to 'sum' function printPairs(arr, n, sum) { // Store counts of all elements in map m var m = {}; // Traverse through all elements for (var i = 0; i < n; i++) { // Search if a pair can be formed with // arr[i]. var rem = sum - arr[i]; if (m.hasOwnProperty(rem)) { var count = m[rem]; for (var j = 0; j < count; j++) { document.write("(" + rem + ", " + arr[i] + ")" + "<br>"); } } if (m.hasOwnProperty(arr[i])) { m[arr[i]]++; } else { m[arr[i]] = 1; } } } // Driver code var arr = [1, 5, 7, -1, 5]; var n = arr.length; var sum = 6; printPairs(arr, n, sum); // This code is contributed by rdtank. </script>
Producción :
(1, 5) (7, -1) (1, 5)
Método 3 .
Otro método para Imprimir todos los pares con la suma dada es el siguiente:
C++
// C++ code to implement // the above approach #include<bits/stdc++.h> using namespace std; void pairedElements(int arr[], int sum, int n) { int low = 0; int high = n - 1; while (low < high) { if (arr[low] + arr[high] == sum) { cout << "The pair is : (" << arr[low] << ", " << arr[high] << ")" << endl; } if (arr[low] + arr[high] > sum) { high--; } else { low++; } } } // Driver code int main() { int arr[] = {2, 3, 4, -2, 6, 8, 9, 11}; int n = sizeof(arr) / sizeof(arr[0]); sort(arr, arr + n); pairedElements(arr, 6, n); } // This code is contributed by Rajput-Ji
Java
import java.util.Arrays; /** * Created by sampat. */ public class SumOfPairs { public void pairedElements(int arr[], int sum) { int low = 0; int high = arr.length - 1; while (low < high) { if (arr[low] + arr[high] == sum) { System.out.println("The pair is : (" + arr[low] + ", " + arr[high] + ")"); } if (arr[low] + arr[high] > sum) { high--; } else { low++; } } } public static void main(String[] args) { int arr[] = { 2, 3, 4, -2, 6, 8, 9, 11 }; Arrays.sort(arr); SumOfPairs sp = new SumOfPairs(); sp.pairedElements(arr, 6); } }
Python3
# Python3 program for the # above approach def pairedElements(arr, sum): low = 0; high = len(arr) - 1; while (low < high): if (arr[low] + arr[high] == sum): print("The pair is : (", arr[low], ", ", arr[high], ")"); if (arr[low] + arr[high] > sum): high -= 1; else: low += 1; # Driver code if __name__ == '__main__': arr = [2, 3, 4, -2, 6, 8, 9, 11]; arr.sort(); pairedElements(arr, 6); # This code contributed by shikhasingrajput
C#
// C# program to find triplets in a given // array whose sum is equal to given sum. using System; public class SumOfPairs { public void pairedElements(int []arr, int sum) { int low = 0; int high = arr.Length - 1; while (low < high) { if (arr[low] + arr[high] == sum) { Console.WriteLine("The pair is : (" + arr[low] + ", " + arr[high] + ")"); } if (arr[low] + arr[high] > sum) { high--; } else { low++; } } } // Driver code public static void Main(String[] args) { int []arr = { 2, 3, 4, -2, 6, 8, 9, 11 }; Array.Sort(arr); SumOfPairs sp = new SumOfPairs(); sp.pairedElements(arr, 6); } } // This code is contributed by Princi Singh
Javascript
<script> // Javascript code to implement // the above approach function pairedElements(arr, sum, n) { var low = 0; var high = n - 1; while (low < high) { if (arr[low] + arr[high] == sum) { document.write("The pair is : (" + arr[low] + ", " + arr[high] + ")<br>"); } if (arr[low] + arr[high] > sum) { high--; } else { low++; } } } // Driver code var arr = [ 2, 3, 4, -2, 6, 8, 9, 11] var n = arr.length; arr.sort(function(a,b){return a-b;}); pairedElements(arr, 6, n); </script>
Producción :
The pair is : (-2, 8) The pair is : (2, 4)