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.
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.
Algorithm:
- Initialize a variable ‘minProduct’ as maximum possible value.
-
Traverse the given array using two nested loops:
a. For each pair of elements, calculate their product and update ‘minProduct’ if it is lesser than the current value. - Return the final value of ‘minProduct’.
Below is the implementation of the approach:
// Java code for the approach public class GFG {
// Function to print the minimum product of any
// two numbers in the array
static int minProduct( int [] arr, int n) {
// Initializing minimum product
int minProd = Integer.MAX_VALUE;
// Loop to generate all possible pairs of elements
for ( int i = 0 ; i < n - 1 ; i++) {
for ( int j = i + 1 ; j < n; j++) {
// Updating minimum product
minProd = Math.min(minProd, arr[i] * arr[j]);
}
}
// Return the minimum product
return minProd;
}
// Driver code
public static void main(String[] args) {
int [] arr = { 11 , 8 , 5 , 7 , 5 , 100 };
int n = arr.length;
// Function call
int minProd = minProduct(arr, n);
System.out.println(minProd);
}
} |
# Function to print the minimum product of any # two numbers in the array def minProduct(arr, n):
# Initializing minimum product
minProd = float ( 'inf' )
# Loop to generate all possible pairs of elements
for i in range (n - 1 ):
for j in range (i + 1 , n):
# Updating minimum product
minProd = min (minProd, arr[i] * arr[j])
# Return the minimum product
return minProd
# Driver code if __name__ = = "__main__" :
arr = [ 11 , 8 , 5 , 7 , 5 , 100 ]
n = len (arr)
# Function call
minProd = minProduct(arr, n)
print (minProd)
# This code is contributed by shivamgupta310570 |
// C# code for the approach using System;
public class GFG {
// Function to print the minimum product of any
// two numbers in the array
static int minProduct( int [] arr, int n) {
// Initializing minimum product
int minProd = Int32.MaxValue;
// Loop to generate all possible pairs of elements
for ( int i = 0; i < n - 1; i++) {
for ( int j = i + 1; j < n; j++) {
// Updating minimum product
minProd = Math.Min(minProd, arr[i] * arr[j]);
}
}
// Return the minimum product
return minProd;
}
// Driver code
public static void Main() {
int [] arr = {11, 8, 5, 7, 5, 100};
int n = arr.Length;
// Function call
int minProd = minProduct(arr, n);
Console.WriteLine(minProd);
}
} // This code is contributed by Vaibhav Nandan |
25
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++ 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 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. |
# 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. |
// 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));
}
} |
// 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 |
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++ 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 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. |
# 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# 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. |
<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 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. ?> |
25
Time Complexity: O(n)
Auxiliary Space: O(1)