http://www.martinkysel.com/codility-triangle-solution/
Determine whether a triangle can be built from a given set of edges.
http://blog.nkbits.com/2015/07/19/codility-triangle/
Determine whether a triangle can be built from a given set of edges.
By sorting the array, we have guaranteed that P+R > Q and Q+R > P (because R is always the biggest). Now what remains, is the proof that P+Q > R, that can be found out by traversing the array. The chance to find such a combination is with three adjacent values as they provide the highest P and Q.
def
solution(A):
if
len
(A) <
3
:
raise
Exception(
"invalid input"
)
A.sort()
for
i
in
xrange
(
len
(A)
-
2
):
if
A[i]
+
A[i
+
1
] > A[i
+
2
]:
return
1
return
0
public int solution(int[] A) {
// Handle with the special cases
if(null == A || A.length < 3) return 0;
// Sort the input, and then try to find the triangular
Arrays.sort(A);
for(int i = 0; i < A.length-2; i++) {
// Beware of overflow
if (A[i] >= 0 && A[i] > A[i+2] - A[i+1]) {
return 1;
}
/*
* We already know A[i+1] <= A[i+2]. If A[i] < 0,
* A[i] + A[i+1] < A[i+2]
*/
}
return 0;
}