An efficient approach using keep track of two minimum elements

The idea is to linearly traverse a given array and keep track of a minimum of two elements. Finally, return the product of two minimum elements.

Below is the implementation of the above approach. 

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.


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>


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.
?>


Output

25










Time Complexity: O(n) 
Auxiliary Space: O(1) 

 



Minimum product pair an array of positive Integers

Given an array of positive integers. We are required to write a program to print the minimum product of any two numbers of the given array.

Examples: 

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.

Recommended Practice

Similar Reads

A basic approach using two nested loops:

A simple approach will be to run two nested loops to generate all possible pairs of elements and keep track of the minimum product....

An optimized approach using sorting:

...

An efficient approach using keep track of two minimum elements:

...