Minimum product pair an array of positive Integers - GeeksforGeeks

17 Mar, 2022
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.
 
Simple Approach : A simple approach will be to run two nested loops to generate all possible pair of elements and keep track of the minimum product. Time Complexity: O( n * n) Auxiliary Space: O( 1 )Better Approach: An efficient approach will be to first sort the given array and print the product of first two numbers, sorting will take O(n log n). Answer will be then a[0] * a[1] Time Complexity: O( n * log(n)) Auxiliary Space: O( 1 )Best Approach: The idea is linearly traverse given array and keep track of minimum two elements. Finally return product of two minimum elements.Below is the implementation of above approach.  
C++
Java
Python3
C#
PHP
Javascript
// C++ program to calculate minimum// product of a pair#include <bits/stdc++.h>using namespace std; // Function to calculate minimum product// of pairint 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 functionint main(){    int a[] = { 11, 8 , 5 , 7 , 5 , 100 };    int n = sizeof(a) / sizeof(a[0]);    cout << printMinimumProduct(a,n);    return 0;}
// Java program to calculate minimum// product of a pairimport 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.
# Python program to# calculate minimum# product of a pair # Function to calculate# minimum product# of pairdef 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# program to calculate minimum// product of a pairusing 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 program to calculate minimum// product of a pair // Function to calculate minimum// product of pairfunction 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.?>
<script> // Javascript program to calculate minimum// product of a pair // Function to calculate minimum product// of pairfunction 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.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
vt_m
jit_t
mayanktyagi1709
surinderdawra388
Arrays
Searching
Sorting
Arrays
Searching
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Chocolate Distribution Problem
Window Sliding Technique
Reversal algorithm for array rotation
Next Greater Element
Find duplicates in O(n) time and O(1) extra space | Set 1
Binary Search
Median of two sorted arrays of different sizes
Find the index of an array element in Java
Two Pointers Technique
Count number of occurrences (or frequency) in a sorted array