给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。
示例 1:
输入: nums = [2,2,3,4]
输出: 3
解释:有效的组合是:
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3
示例 2:
输入: nums = [4,2,3,4]
输出: 4
/*** @param {number[]} nums* @return {number}*/var triangleNumber = function (nums) {let n = nums.length;if (n < 3) return 0;// 排序,双指针nums.sort((a, b) => a - b);let res = 0;for (let i = n - 1; i > 1; i -= 1) {let l = 0, r = i - 1;while (l < r) {// 组成三角形,两边只和大于第三边if (nums[l] + nums[r] > nums[i]) {res += r - l;r -= 1} else {l += 1}}}return res};

