Problem Statement:
- Given the array of integers.
- Choose two different indices i and j of that array.
- Find out product of two elements in array such that (nums[i]-1)*(nums[j]-1) is maximum.
- We have discussed similar problem to find out second largest element in an array.
Example to Find Maximum Product of Two Elements
Example 1:
Input: nums = [3,4,5,2]
Output: 12
Explanation: If we choose the indices i=1 and j=2 (0 bound array),
we will get the maximum value,
that is, (nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12.
Example 2:
Input: nums = [1,5,4,5]
Output: 16
Explanation: Choosing the indices i=1 and j=3 (indexed from 0),
we will get the maximum value of (5-1)*(5-1) = 16.
Example 3:
Input: nums = [3,7]
Output: 12
Algorithm to Calculate Maximum Product of Two Elements:
- Declare max & secondMax element.
- Iterate through array.
- Find maximum & second maximum element
- Calculate product of maximum & second maximum element
Program to Maximum Product of Two Elements in an Array
package org.learn;
public class MaxProductTwoElement {
public static int maxProduct(int[] nums) {
int max = Integer.MIN_VALUE;
int secondMax = max;
for(int number : nums) {
if(max < number) {
secondMax = max;
max = number;
} else if(secondMax < number) {
secondMax = number;
}
}
return (max-1) * (secondMax-1);
}
public static void main(String[] args) {
int arr[] = {3,4,5,2};
System.out.println("Output :" + maxProduct(arr));
int inputArr[] = {1,5,4,5};
System.out.println("Output :" + maxProduct(inputArr));
int arrVal[] = {3,7};
System.out.println("Output :" + maxProduct(arrVal));
}
}
Output: Maximum Product of Two Elements in an Array
Output :12
Output :16
Output :12