Minimum product pair an array of positive Integers
Last Updated :
20 Sep, 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: 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:
C++
// C++ code for the approach
#include<bits/stdc++.h>
using namespace std;
// Function to print the minimum product of any
// two numbers in the array
int minProduct(int arr[], int n) {
// Initializing minimum product
int minProd = INT_MAX;
// 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 = min(minProd, arr[i]*arr[j]);
}
}
// Return the minimum product
return minProd;
}
// Driver code
int main() {
int arr[] = { 11, 8 , 5 , 7 , 5 , 100 };
int n = sizeof(arr)/sizeof(arr[0]);
// Function call
int minProd = minProduct(arr, n);
cout << minProd << endl;
return 0;
}
Java
// 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);
}
}
Python3
# 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#
// 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
JavaScript
// Function to print the minimum product of any
// two numbers in the array
function minProduct(arr, n) {
// Initializing minimum product
let minProd = Number.MAX_SAFE_INTEGER;
// Loop to generate all possible pairs of elements
for (let i = 0; i < n - 1; i++) {
for (let 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
const arr = [11, 8, 5, 7, 5, 100];
const n = arr.length;
// Function call
const minProd = minProduct(arr, n);
console.log(minProd);
// This code is contributed by shivamgupta310570
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.
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.
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));
}
}
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
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.
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>
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.
?>
Time Complexity: O(n)
Auxiliary Space: O(1)
Similar Reads
Find a pair with maximum product in array of Integers Given an array with both +ive and -ive integers, return a pair with the highest product. Examples : Input: arr[] = {1, 4, 3, 6, 7, 0} Output: {6,7} Input: arr[] = {-1, -3, -4, 2, 0, -5} Output: {-4,-5} Recommended PracticeMaximum product of two numbersTry It! A Simple Solution is to consider every p
15+ min read
Closest product pair in an array Given an array of non-negative integers and a number x, find a pair in the array whose product is closest to x. Examples: Input : arr[] = [2, 3, 5, 9] x = 47 Output : {5, 9} Input : arr[] = [2, 3, 5, 9] x = 8 Output : {2, 5} Method 1 A simple solution is to consider every pair and keep track of the
12 min read
Find minimum GCD of all pairs in an array Given an array arr of positive integers, the task is to find the minimum GCD possible for any pair of the given array.Examples: Input: arr[] = {1, 2, 3, 4, 5} Output: 1 Explanation: GCD(1, 2) = 1. Input: arr[] = {2, 4, 6, 8, 3} Output: 1 Naive approach: Generate all the pairs of elements and take GC
4 min read
Maximum sum of minimums of pairs in an array Given an array arr[] of N integers where N is even, the task is to group the array elements in the pairs (X1, Y1), (X2, Y2), (X3, Y3), ... such that the sum min(X1, Y1) + min(X2, Y2) + min(X3, Y3) + ... is maximum.Examples: Input: arr[] = {1, 5, 3, 2} Output: 4 (1, 5) and (3, 2) -> 1 + 2 = 3 (1,
4 min read
Minimum sum of product of elements of pairs of the given array Given an array arr[] of even number of element N in it. The task is to form N/2 pairs such that sum of product of elements in those pairs is minimum. Examples Input: arr[] = { 1, 6, 3, 1, 7, 8 } Output: 270 Explanation: The pair formed are {1, 1}, {3, 6}, {7, 8} Product of sum of these pairs = 2 * 9
5 min read