Dadas dos arrays a[] y b[] , la tarea es encontrar el recuento de todos los pares (a[i], b[j]) de modo que a[i] + b[j] sea único entre todos los pares, es decir si dos pares tienen la misma suma, solo se contará uno en el resultado.
Ejemplos:
Entrada: a[] = {3, 3}, b[] = {3}
Salida: 1
Los dos pares posibles son (a[0], b[0]) y (a[1], b[0]) .
Par 1: 3 + 3 = 6
Par 2: 3 + 3 = 6
Entrada: a[] = {12, 2, 7}, b[] = {4, 3, 8}
Salida: 7
Enfoque: Inicialice count = 0 y ejecute dos bucles para considerar todos los pares posibles y almacene la suma de cada par en un conjunto_desordenado para comprobar si la suma se ha obtenido antes. Si es así, ignore el par actual; de lo contrario, incremente el conteo .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the count // of pairs with distinct sum int countPairs(int a[], int b[], int n, int m) { // To store the required count int cnt = 0; // Set to store the sum // obtained for each pair unordered_set<int> s; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { // Sum of the current pair int sum = a[i] + b[j]; // If the sum obtained is distinct if (s.count(sum) == 0) { // Increment the count cnt++; // Insert sum in the set s.insert(sum); } } } return cnt; } // Driver code int main() { int a[] = { 12, 2, 7 }; int n = sizeof(a) / sizeof(a[0]); int b[] = { 4, 3, 8 }; int m = sizeof(b) / sizeof(b[0]); cout << countPairs(a, b, n, m); return 0; }
Java
// Java implementation of the approach import java.util.*; class GFG { // Function to return the count // of pairs with distinct sum static int countPairs(int a[], int b[], int n, int m) { // To store the required count int cnt = 0; // Set to store the sum // obtained for each pair HashSet<Integer> s = new HashSet<Integer>(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { // Sum of the current pair int sum = a[i] + b[j]; // If the sum obtained is distinct if (s.contains(sum) == false) { // Increment the count cnt++; // Insert sum in the set s.add(sum); } } } return cnt; } // Driver code static public void main (String args[]) { int a[] = { 12, 2, 7 }; int n = a.length; int b[] = { 4, 3, 8 }; int m = b.length; System.out.println(countPairs(a, b, n, m)); } } // This code is contributed by AnkitRai01
Python3
# Python3 implementation of the approach # Function to return the count # of pairs with distinct sum def countPairs(a, b, n, m): # To store the required count cnt = 0 # Set to store the sum # obtained for each pair s=dict() for i in range(n): for j in range(m): # Sum of the current pair sum = a[i] + b[j] # If the sum obtained is distinct if (sum not in s.keys()): # Increment the count cnt+=1 # Insert sum in the set s[sum]=1 return cnt # Driver code a =[ 12, 2, 7] n = len(a) b =[ 4, 3, 8 ] m = len(b) print(countPairs(a, b, n, m)) # This code is contributed by mohit kumar 29
C#
// C# implementation of the approach using System; using System.Collections.Generic; class GFG { // Function to return the count // of pairs with distinct sum static int countPairs(int []a, int []b, int n, int m) { // To store the required count int cnt = 0; // Set to store the sum // obtained for each pair HashSet<int> s = new HashSet<int>(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { // Sum of the current pair int sum = a[i] + b[j]; // If the sum obtained is distinct if (s.Contains(sum) == false) { // Increment the count cnt++; // Insert sum in the set s.Add(sum); } } } return cnt; } // Driver code static public void Main (String []args) { int []a = { 12, 2, 7 }; int n = a.Length; int []b = { 4, 3, 8 }; int m = b.Length; Console.WriteLine(countPairs(a, b, n, m)); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // Javascript implementation of the approach // Function to return the count // of pairs with distinct sum function countPairs(a, b, n, m) { // To store the required count let cnt = 0; // Set to store the sum // obtained for each pair let s = new Set(); for (let i = 0; i < n; i++) { for (let j = 0; j < m; j++) { // Sum of the current pair let sum = a[i] + b[j]; // If the sum obtained is distinct if (s.has(sum) == false) { // Increment the count cnt++; // Insert sum in the set s.add(sum); } } } return cnt; } // Driver code let a = [ 12, 2, 7 ]; let n = a.length; let b = [ 4, 3, 8 ]; let m = b.length; document.write(countPairs(a, b, n, m)); // This code is contributed by susmitakundugoaldanga. </script>
7
Complejidad temporal: O(N * M).
Espacio Auxiliar : O(1).