Java Program for Minimum product pair an array of positive Integers
Last Updated :
30 Mar, 2023
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 : 9348
Explanation : The minimum product of any
two numbers will be 76 * 123 = 9348.
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.
Java
import java.util.Arrays;
public class MinProductOfTwo {
public static void main(String[] args) {
int [] arr = { 11 , 8 , 5 , 7 , 5 , 100 };
int n = arr.length;
int minProduct = printMinimumProduct(arr);
System.out.println(minProduct);
}
public static int printMinimumProduct( int [] arr) {
int minProduct = Integer.MAX_VALUE;
for ( int i = 0 ; i < arr.length - 1 ; i++) {
for ( int j = i + 1 ; j < arr.length; j++) {
int product = arr[i] * arr[j];
if (product < minProduct) {
minProduct = product;
}
}
}
return minProduct;
}
}
|
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]
Java
import java.util.Arrays;
public class GFG {
static long findMinimumProduct( int [] arr) {
int n = arr.length;
Arrays.sort(arr);
return ( long )arr[ 0 ] * arr[ 1 ];
}
public static void main(String[] args) {
int [] arr = { 11 , 8 , 5 , 7 , 5 , 100 };
long minProduct = findMinimumProduct(arr);
System.out.println(minProduct);
}
}
|
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.
Java
import java.util.*;
class GFG {
static int printMinimumProduct( int arr[], int n)
{
int first_min = Math.min(arr[ 0 ], arr[ 1 ]);
int second_min = Math.max(arr[ 0 ], arr[ 1 ]);
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;
}
public static void main(String[] args)
{
int a[] = { 11 , 8 , 5 , 7 , 5 , 100 };
int n = a.length;
System.out.print(printMinimumProduct(a,n));
}
}
|
Time Complexity: O(n)
Auxiliary Space: O(1) Please refer complete article on Minimum product pair an array of positive Integers for more details!
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...