611. 有效三角形的个数

固定一个最大长度的边,另外两个边进行双指针移动。 当出现符合条件的双指针时,他们范围内的数也同样符合三角形。

  1. public int triangleNumber(int[] nums) {
  2. if (nums.length < 3) {
  3. return 0;
  4. }
  5. Arrays.sort(nums);
  6. int count = 0;
  7. for (int i = nums.length - 1; i >= 2; i--) {
  8. int left = 0;
  9. int right = i - 1;
  10. while (left < right) {
  11. if (nums[left] + nums[right] > nums[i]) {
  12. count += right - left;
  13. right--;
  14. } else {
  15. left++;
  16. }
  17. }
  18. }
  19. return count;
  20. }