Open In App

Java Program for Minimum product pair an array of positive Integers

Last Updated : 30 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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




// Java program to find minimum product of any two numbers in an array
 
import java.util.Arrays;
 
public class MinProductOfTwo {
      // Driver Code
    public static void main(String[] args) {
        int[] arr = { 11, 8, 5, 7, 5, 100 };
        int n = arr.length;
           
          // Function Call
        int minProduct = printMinimumProduct(arr);
        System.out.println(minProduct);
    }
 
      
    public static int printMinimumProduct(int[] arr) {
        int minProduct = Integer.MAX_VALUE;
       
          // loop through all possible pairs of array elements and find minimum product
        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 minProduct is greater than the current product of 2 elements
                  // then update the minProduct with that one
                if (product < minProduct) {
                    minProduct = product;
                }
            }
        }
         
          // return minimum product
        return minProduct;
    }
}


Output

25

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




// Java program to find the minimum product of any two
// numbers in an array
 
import java.util.Arrays;
 
public class GFG {
    // Function to find the minimum product of any two
    // numbers in an array
    static long findMinimumProduct(int[] arr) {
        int n = arr.length;
           
          // sort the array
        Arrays.sort(arr);
       
          // return the product of first two
        // numbers
        return (long)arr[0] * arr[1];
    }
   
    // Driver code
    public static void main(String[] args) {
          // Input array
        int[] arr = { 11, 8 , 5 , 7 , 5 , 100 };
       
          // Function Call
        long minProduct = findMinimumProduct(arr);
       
          // Printing final answer
        System.out.println(minProduct);
    }
}


Output

25

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




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


Output

25

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

Similar Reads