方法一:暴力破解的方式
class Solution {
public int triangleNumber(int[] nums) {
if(nums.length==0||nums.length<3){
return 0;
}
int count=0;
Arrays.sort(nums);
for(int i=0;i<nums.length-2;i++){
for(int j=i+1;j<nums.length-1;j++){
for(int k=j+1;k<nums.length;k++){
if(nums[i]+nums[j]>nums[k]){
count++;
}
}
}
}
return count;
}
}
方法二:双指针法
class Solution {
public int triangleNumber(int[] nums) {
if(nums.length<3||nums==null){
return 0;
}
Arrays.sort(nums);
int count=0;
for(int i=nums.length-1;i>=2;i--){
int start=0;
int end=i-1;;
while(start<end){
if(nums[i]<nums[end]+nums[start]){
count+=end-start;
end--;
}else{
start++;
}
}
}
return count;
}
}