Programa C++ para par de productos mínimos una array de enteros positivos

Dada una array de enteros positivos. Estamos obligados a escribir un programa para imprimir el producto mínimo de dos números cualesquiera de la array dada.
Ejemplos: 
 

Input : 11 8 5 7 5 100
Output : 25 
Explanation : The minimum product of any 
two numbers will be 5 * 5 = 25.

Input : 198 76 544 123 154 675 
Output : 7448
Explanation : The minimum product of any 
two numbers will be 76 * 123 = 7448.

Enfoque simple: un enfoque simple será ejecutar dos bucles anidados para generar todos los pares de elementos posibles y realizar un seguimiento del producto mínimo. 
Complejidad de tiempo: O( n * n) 
Espacio auxiliar: O( 1 )
Mejor enfoque: un enfoque eficiente será ordenar primero la array dada e imprimir el producto de los dos primeros números, la clasificación tomará O(n log n). La respuesta será entonces a[0] * a[1] 

C++

// C++ program to calculate minimum
// product of a pair
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate minimum product
// of pair
int printMinimumProduct(int arr[], int n)
{
    //Sort the array
    sort(arr,arr+n);
     
    // Returning the product of first two numbers
    return arr[0] * arr[1];
}
 
// Driver program to test above function
int main()
{
    int a[] = { 11, 8 , 5 , 7 , 5 , 100 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << printMinimumProduct(a,n);
    return 0;
}
 
// This code is contributed by Pushpesh Raj
Producción

25

Complejidad de tiempo: O( n * log(n)) 
Espacio auxiliar: O( 1 )
Mejor enfoque: la idea es recorrer linealmente una array dada y realizar un seguimiento de un mínimo de dos elementos. Finalmente retorno producto de dos elementos mínimos.
A continuación se muestra la implementación del enfoque anterior. 
 

C++

// C++ program to calculate minimum
// product of a pair
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate minimum product
// of pair
int printMinimumProduct(int arr[], int n)
{
    // Initialize first and second
    // minimums. It is assumed that the
    // array has at least two elements.
    int first_min = min(arr[0], arr[1]);
    int second_min = max(arr[0], arr[1]);
 
    // Traverse remaining array and keep
    // track of two minimum elements (Note
    // that the two minimum elements may
    // be same if minimum element appears
    // more than once)
    // more than once)
    for (int i=2; i<n; i++)
    {
       if (arr[i] < first_min)
       {
          second_min = first_min;
          first_min = arr[i];
       }
       else if (arr[i] < second_min)
          second_min = arr[i];
    }
 
    return first_min * second_min;
}
 
// Driver program to test above function
int main()
{
    int a[] = { 11, 8 , 5 , 7 , 5 , 100 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << printMinimumProduct(a,n);
    return 0;
}
Producción

25

Producción: 
 

25

Complejidad de tiempo: O(n) 
Espacio auxiliar: O(1) Consulte el artículo completo sobre el par mínimo de productos y una array de enteros positivos para obtener más detalles.

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

Deja una respuesta

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