Triangle count
思路: 三角形的任意两边之和大于第三边。如果小的两条边之和大于最大的一条边长,那肯定是三角形。不用检查其它情况了。所以这道题是找i的左边,有多少种情况是S[left] + S[right] > S[i]成立。 代码如下: public class Solution { /** * @param S: A list of integers * @return: An integer */ public int triangleCount(int S[]) { // write your code here int res = 0; Arrays.sort(S); for(int i = 0; i < S.length; i++) { int left = 0; int right = i - 1; while(left < right) { if(S[left] + S[right] > S[i]) { res += right - left; right--; } else { left++; } } } return res; } }