Skip to content
Related Articles
Open in App
Not now

Related Articles

Minimum product pair an array of positive Integers

Improve Article
Save Article
Like Article
  • Difficulty Level : Easy
  • Last Updated : 31 Oct, 2022
Improve Article
Save Article
Like Article

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

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. 
Time Complexity: O( n * n) 
Auxiliary Space: O( 1 )

An optimized approach using sorting:

An optimized approach will be to first sort the given array and print the product of the first two numbers, sorting will take O(n log n) and the answer will be a[0] * a[1] 

C++




// C++ program for the above approach
#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

Java




// java program for the above approach
import java.util.*;
class GFG
{
   
  // Function to calculate minimum product
  // of pair
  static int printMinimumProduct(int arr[], int n)
  {
     
    // Sort the array
    Arrays.sort(arr);
 
    // Returning the product of first two numbers
    return arr[0]*arr[1];
  }
 
  // 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.println(printMinimumProduct(a,n));
  }
}
 
// This code is contributed by nmkiniqw7b.

C#




// C# program for the above approach
using System;
class GFG
{
 
  //function to calculate minimum product of pair
  static int printMinimumProduct(int []arr,int n)
  {
 
    // first sort the array
    Array.Sort(arr);
 
    // returning the product of first two numbers
    return arr[0] * arr[1];
  }
 
  // driver program
  static void Main() {
    int []a = { 11, 8 , 5 , 7 ,5 , 100 };
    int n = a.Length;
    Console.WriteLine(printMinimumProduct(a, n));
  }
}

Python3




# Python program for the above approach
 
# Function to calculate minimum product
# of pair
def printMinimumProduct(list,n):
 
  # Sort the list
  list.sort()
 
  # Returning the product of first two numbers
  return list[0]*list[1]
 
# Driver code
 
a = [ 11, 8 , 5 , 7 , 5 , 100 ]
n = len(a)
 
print(printMinimumProduct(a,n))
 
# This code is contributed by nmkiniqw7b.

Javascript




// Javascript program for the above approach
 
// Function to calculate minimum product
// of pair
function printMinimumProduct(arr, n)
{
    // Sort the array
    arr.sort(function(a, b){return a - b});
     
    // Returning the product of first two numbers
    return arr[0] * arr[1];
}
 
// Driver program to test above function
    let a = [ 11, 8 , 5 , 7 , 5 , 100 ];
    let n = a.Length;
    console.log(printMinimumProduct(a,n));
 
// This code is contributed by Aman Kumar

Output

25

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

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.

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>

Output

25

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

This article is contributed by Raja Vikramaditya. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 


My Personal Notes arrow_drop_up
Like Article
Save Article
Related Articles

Start Your Coding Journey Now!