代码语言:javascript复制给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3
class Solution {
public int triangleNumber(int[] nums) {
/**
双指针:
找到最大值(不断--)
如果两个数之和>最大值 结果就 = right-left
*/
Arrays.sort(nums);
int n=nums.length;
int res=0;
for(int i=n-1;i>=2;--i){
int left=0,right=i-1;
while(left<right){
if(nums[left] nums[right]>nums[i]){
res =right-left;// right和left之间的数
right--;//不断更新最大值
}else{
left ;
}
}
}
return res;
}
}