Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/1913.html

1913. Maximum Product Difference Between Two Pairs

Level

Easy

Description

The product difference between two pairs (a, b) and (c, d) is defined as (a * b) - (c * d).

  • For example, the product difference between (5, 6) and (2, 7) is (5 * 6) - (2 * 7) = 16.

Given an integer array nums, choose four distinct indices w, x, y, and z such that the product difference between pairs (nums[w], nums[x]) and (nums[y], nums[z]) is maximized.

Return the maximum such product difference.

Example 1:

Input: nums = [5,6,2,7,4]

Output: 34

Explanation: We can choose indices 1 and 3 for the first pair (6, 7) and indices 2 and 4 for the second pair (2, 4).

The product difference is (6 * 7) - (2 * 4) = 34.

Example 2:

Input: nums = [4,2,5,9,7,4,8]

Output: 64

Explanation: We can choose indices 3 and 6 for the first pair (9, 8) and indices 1 and 5 for the second pair (2, 4).

The product difference is (9 * 8) - (2 * 4) = 64.

Constraints:

  • 4 <= nums.length <= 10^4
  • 1 <= nums[i] <= 10^4

Solution

Since all elements in nums are positive, to maximize the product difference, the two pairs should be the two maximum elements and the two minimum elements, respectively. Therefore, sort the array, get the two maximum elements and the two minimum elements, and return the product difference between the two pairs.

  • class Solution {
        public int maxProductDifference(int[] nums) {
            Arrays.sort(nums);
            int length = nums.length;
            return nums[length - 2] * nums[length - 1] - nums[0] * nums[1];
        }
    }
    
    ############
    
    class Solution {
        public int maxProductDifference(int[] nums) {
            Arrays.sort(nums);
            int n = nums.length;
            return nums[n - 1] * nums[n - 2] - nums[0] * nums[1];
        }
    }
    
  • // OJ: https://leetcode.com/problems/maximum-product-difference-between-two-pairs/
    // Time: O(NlogN)
    // Space: O(1)
    class Solution {
    public:
        int maxProductDifference(vector<int>& A) {
            sort(begin(A), end(A));
            int N = A.size();
            return A[N - 1] * A[N - 2] - A[0] * A[1];
        }
    };
    
  • class Solution:
        def maxProductDifference(self, nums: List[int]) -> int:
            nums.sort()
            return nums[-1] * nums[-2] - nums[0] * nums[1]
    
    ############
    
    # 1913. Maximum Product Difference Between Two Pairs
    # https://leetcode.com/problems/maximum-product-difference-between-two-pairs/
    
    class Solution:
        def maxProductDifference(self, nums: List[int]) -> int:
            nums.sort()
            
            return (nums[-1] * nums[-2]) - (nums[0] * nums[1])
    
    
  • func maxProductDifference(nums []int) int {
    	sort.Ints(nums)
    	n := len(nums)
    	return nums[n-1]*nums[n-2] - nums[0]*nums[1]
    }
    
  • /**
     * @param {number[]} nums
     * @return {number}
     */
    var maxProductDifference = function (nums) {
        nums.sort((a, b) => a - b);
        let n = nums.length;
        let ans = nums[n - 1] * nums[n - 2] - nums[0] * nums[1];
        return ans;
    };
    
    

All Problems

All Solutions