Algorithm/LeetCode

1913. Maximum Product Difference Between Two Pairs

 

https://leetcode.com/problems/maximum-product-difference-between-two-pairs/

 

Maximum Product Difference Between Two Pairs - LeetCode

Can you solve this real interview question? Maximum Product Difference Between Two Pairs - 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

leetcode.com

 

두 쌍 (a, b)와 (c, d) 사이의 제품 차이는 (a * b) - (c * d)로 정의됩니다.
예를 들어, (5, 6)과 (2, 7)의 곱 차이는 (5 * 6) - (2 * 7) = 16입니다.
정수 배열 nums가 주어지면
쌍 (nums[w], nums[x])와 (nums[y], nums[z]) 사이의 곱 차이가 최대화되도록
4개의 개별 인덱스 w, x, y 및 z를 선택합니다.
이러한 제품 차이의 최대값을 반환합니다.

 

나의 풀이

import java.util.Arrays;
class Solution {
    public int maxProductDifference(int[] nums) {
        Arrays.sort(nums);
        return (nums[nums.length-2] * nums[nums.length-1]) - (nums[0] * nums[1]);
    }
}

 

다른사람 풀이

(No Sorting)

class Solution {
    public int maxProductDifference(int[] nums) {
        // given: 1 <= nums[i] <= 10000
        int max = 0, max2 = 0;
        int min = 10001, min2 = 10001;
        for (int i : nums) {
            if (i > max) {          // 1
                max2 = max;
                max = i;
            } else if (i > max2) {  // 2
                max2 = i;
            }
            if (i < min) {          // 3
                min2 = min;
                min = i;
            } else if (i < min2) {  // 4
                min2 = i;
            }
        }
        // return the product difference
        return max * max2 - min * min2; 
    }
}