题目传送门
方法一:排序+双指针
1.排序
2.设置一个for循环。用来当做第三边。我们从后往前遍历。直到 i=2 时跳出循环。
3.初始化 left 指针=0,初始化right 指针等于 i-1。这样我们判断两边之和。
4.在left < right 的情况了,如果两边之和大于第三边。则count += (left - right)且right--
否则left++。
5.返回count
class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int count = 0;for (int i = nums.length-1; i >= 2; i--) {int target = nums[i];int l = 0; int r = i-1;while (l < r){if(nums[l] + nums [r] > target){count = count + (r-l);r--;}else l++;}}return count;}
}