Par mínimo de productos 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] 
Complejidad de tiempo: O( n * log(n)) 
Espacio auxiliar: O( 1 )

Mejor enfoque: la idea es atravesar 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;
}

Java

// Java program to calculate minimum
// product of a pair
import java.util.*;
 
class GFG {
     
    // Function to calculate minimum product
    // of pair
    static 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 = Math.min(arr[0], arr[1]);
        int second_min = Math.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 */
    public static void main(String[] args)
    {
        int a[] = { 11, 8 , 5 , 7 , 5 , 100 };
        int n = a.length;
        System.out.print(printMinimumProduct(a,n));
      
    }
}
 
// This code is contributed by Arnav Kr. Mandal.

Python3

# Python program to
# calculate minimum
# product of a pair
 
# Function to calculate
# minimum product
# of pair
def printMinimumProduct(arr,n):
 
    # Initialize first and second
    # minimums. It is assumed that the
    # array has at least two elements.
    first_min = min(arr[0], arr[1])
    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 i in range(2,n):
     
         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 code
 
a= [ 11, 8 , 5 , 7 , 5 , 100 ]
n = len(a)
 
print(printMinimumProduct(a,n))
 
# This code is contributed
# by Anant Agarwal.

C#

// C# program to calculate minimum
// product of a pair
using System;
 
class GFG {
     
    // Function to calculate minimum
    // product of pair
    static 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 = Math.Min(arr[0],
                                    arr[1]);
                                     
        int second_min = Math.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)
        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 */
    public static void Main()
    {
        int []a = { 11, 8 , 5 , 7 ,
                            5 , 100 };
        int n = a.Length;
         
        Console.WriteLine(
            printMinimumProduct(a, n));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to calculate minimum
// product of a pair
 
// Function to calculate minimum
// product of pair
function printMinimumProduct($arr, $n)
{
     
    // Initialize first and second
    // minimums. It is assumed that the
    // array has at least two elements.
    $first_min = min($arr[0], $arr[1]);
    $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 ($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 Code
$a = array(11, 8 , 5 , 7 , 5 , 100);
$n = sizeof($a);
echo(printMinimumProduct($a, $n));
 
// This code is contributed by Ajit.
?>

Javascript

<script>
 
// Javascript program to calculate minimum
// product of a pair
 
// Function to calculate minimum product
// of pair
function printMinimumProduct(arr, n)
{
    // Initialize first and second
    // minimums. It is assumed that the
    // array has at least two elements.
    let first_min = Math.min(arr[0], arr[1]);
    let second_min = Math.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 (let 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
 
    let a = [ 11, 8 , 5 , 7 , 5 , 100 ];
    let n = a.length;
    document.write(printMinimumProduct(a,n));
 
// This code is contributed by Mayank Tyagi
 
</script>
Producción

25

Complejidad temporal: O(n) 
Espacio auxiliar: O(1) 

Este artículo es una contribución de Raja Vikramaditya . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

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 *