一、题目
- 有效三角形的个数
给定一个包含非负整数的数组 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
二、思路
双指针
三、代码
class Solution {
public:
int triangleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
int ret = 0;
for(int i = nums.size()-1;i>=2;i--){
int left=0,right = i-1;
while(left<right){
if(nums[left]+nums[right]>nums[i]){
ret=ret+(right-left);
right--;
}else left++;
}
}
return ret;
}
};