方法一:暴力破解的方式
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; } }