https://leetcode.com/problems/valid-triangle-number/
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: 3 Explanation: Valid combinations are: 2,3,4 (using the first 2) 2,3,4 (using the second 2) 2,2,3Note:
The length of the given array won't exceed 1000.The integers in the given array are in the range of [0, 1000].https://leetcode.com/problems/valid-triangle-number/discuss/104177/O(N2)-solution-for-C++-and-Python
class Solution { public: int triangleNumber(vector<int>& nums) { int result = 0; sort(nums.begin(), nums.end()); for(int i = nums.size()-1; i > 1; --i){ int j = 0, k = i-1; while(j < k){ if(nums[i] < nums[j] + nums[k]){ result += k-j; --k; }else{ ++j; } } } return result; } };