611. Valid Triangle Number
来源:互联网 发布:剑灵捏脸数据如何保存 编辑:程序博客网 时间:2024/06/07 15:03
# 611. Valid Triangle Number标签(空格分隔): leetcode array medium—# 题目
Given an array consists of non-negative integers, your task is to count the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle.
Example 1:
Input: [2,2,3,4]Output: 3Explanation:Valid combinations are: 2,3,4 (using the first 2)2,3,4 (using the second 2)2,2,3
Note:
- The length of the given array won’t exceed 1000.
- The integers in the given array are in the range of [0, 1000].
思路
本题判断的规则是最小两边之和大于第三边。我们实现了一个时间复杂度为
代码
class Solution {public: int triangleNumber(vector<int>& nums) { //step1:先排序 sort(nums.begin(),nums.end()); int count=0,num=nums.size(),l,r; //遍历 for(int i=num-1;i>=2;i--){ l=0,r=i-1; while(l<r) { if(nums[l]+nums[r]>nums[i]) { count+=r-l; r--; } else l++; } } return count; }};
阅读全文