Painless
MaxProductOfThree
Maximize A [P] * A [Q] * A [R] for any triplet (P, Q, R).
Given a non-empty array A consisting of N integers. The product of triplets (P, Q, R) is equal to A [P] * A [Q] * A [R](0 ≤ P <Q <R <N).
For example, the following array A:
Example
   A [0] = -3
   A [1] = 1
   A [2] = 2
   A [3] = -2
   A [4] = 5
   A [5] = 6
The following triplet example is included.
Your goal is to find the maximum product of triplets.
Write a function:
class solution {public int solution(int [] A); }
Given a non-empty array A, returns the value of the maximum product of any triplet.
For example, given the following array A:
Example
   A [0] = -3
   A [1] = 1
   A [2] = 2
   A [3] = -2
   A [4] = 5
   A [5] = 6
The function must return 60 because the product of triplets (2, 4, 5) is the largest.
Write a ** efficient ** algorithm for the following assumptions:

Program MaxProductOfThreeSolution.java
    public int solution(int[] A) {
        int max1 = -9999;
        int max2 = -9999;
        int max3 = -9999;
        int min2 = 9999;
        int min1 = 9999;
        for (int a : A) {
            if (a > max1) {
                max3 = max2;
                max2 = max1;
                max1 = a;
            } else if (a > max2) {
                max3 = max2;
                max2 = a;
            } else if (a > max3) {
                max3 = a;
            }
            if (a < min1) {
                min2 = min1;
                min1 = a;
            } else if (a < min2) {
                min2 = a;
            }
        }
        int maxProduct = max1 * max2 * max3;
        if (max1 <= 0 || min1 >= 0) {
            //All negative||All positive
            return maxProduct;
        } else {
            if (min2 < 0 ) {
                //At least two negatives
                int temp = max1 * min1 * min2;
                if (temp > maxProduct) return temp;
            }
        }
        return maxProduct;
    }
Detected time complexity:
O(N * log(N))
jUnit MaxProductOfThreeSolutionTest.java
Report trainingUP9UFH-H2Y
Recommended Posts