Recuento de pares entre dos arrays tales que las sumas son distintas

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:
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:
 

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>
Producción: 

7

 

Complejidad temporal: O(N * M).
Espacio Auxiliar : O(1).  

Publicación traducida automáticamente

Artículo escrito por nidhiva y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *