1464. Maximum Product of Two Elements in an Array

Description

Given the array of integers nums, you will choose two different indices i and j of that array. Return the maximum value of (nums[i]-1)*(nums[j]-1).

Constraints

  • 2 <= nums.length <= 500

  • 1 <= nums[i] <= 10^3

Approach

Examples

Input: nums = [3, 4, 5, 2]

Output: 12

Explanation: If you choose the indices i=1 and j=2 (indexed from 0), you will get the maximum value, that is, (nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 3*4 = 12.

Solutions

/**
 * Time complexity : 
 * Space complexity : 
 */

class Solution {
    public int maxProduct(int[] nums) {
        if(nums == null || nums.length < 2) {
            return 0;
        }
        int max1 = 0, max2 = 0;
        for(int num: nums) {
            if(num > max1) {
                max2 = max1;
                max1 = num;
            } else if(num > max2) {
                max2 = num;
            }
        }
        return (max1-1)*(max2-1);
    }
}

Follow up

Last updated

Was this helpful?