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