考え方
これもほぼほぼ数学的なセンスが必要です
Sort済みの場合、0 ≤ P < Q < R < N
に必ずなっている
P+Q>Rだけを調べればいい訳は、ソート済みの場合はP<Q<R
に必ずなっている前提のため(1,2,5,8,10,20)
、
1,2,5をP,Q,Rとすると、
P(1)+R(5)>Q(2)
, Q(2)+R(5)>P(1)
は必ず満たされる。
この場合、P(1)+Q(2)>R(5)
のみ満たされないため、それだけ調べて満たされるものがあれば1
を返せばよい
例だとP(5)+Q(8)>R(10)
が条件を満たす。
コード
import java.util.Arrays; public class Solution { public static void main(String[] args) { System.out.println(solution(new int[] {10,2,5,1,8,20})); } public static int solution(int[] A) { Arrays.sort(A); for(int i=2; i<A.length; i++) { if((long)A[i] < (long)A[i-2] + (long)A[i-1]) { return 1; } } return 0; } }