Triplets with Sum between given range

Given an array of real numbers greater than zero in form of strings. Find if there exists a triplet (a,b,c) such that 1 < a+b+c < 2 . Return 1 for true or 0 for false.

Example:

Given [0.6, 0.7, 0.8, 1.2, 0.4] ,

You should return 1

as

0.6+0.7+0.4=1.7

1<1.7<2

Hence, the output is 1.

O(n) solution is expected.

Note: You can assume the numbers in strings donโ€™t overflow the primitive data type and there are no leading zeroes in numbers. Extra memory usage is allowed.

public class Solution {
    public int solve(String[] A) {
        if (A.length < 3)
            return 0;
        double a = Double.parseDouble(A[0]);
        double b = Double.parseDouble(A[1]);
        double c = Double.parseDouble(A[2]);
        for (int i = 3; i < A.length; i++) {
            if (a + b + c >= 1 && a + b + c <= 2)
                return 1;
            else if (a + b + c > 2) {
                if (a > c && a > b)
                    a = Double.parseDouble(A[i]);
                else if (b > c)
                    b = Double.parseDouble(A[i]);
                else
                    c = Double.parseDouble(A[i]);

            } else {
                if (a < c && a < b)
                    a = Double.parseDouble(A[i]);
                else if (b < c)
                    b = Double.parseDouble(A[i]);
                else
                    c = Double.parseDouble(A[i]);
            }
        }
        if (a + b + c >= 1 && a + b + c <= 2)
            return 1;
        else
            return 0;
    }
}

Last updated