/* * @lc app=leetcode id=611 lang=cpp * * [611] Valid Triangle Number * * https://leetcode.com/problems/valid-triangle-number/description/ * * algorithms * Medium (46.01%) * Likes: 672 * Dislikes: 79 * Total Accepted: 42.7K * Total Submissions: 92.8K * Testcase Example: '[2,2,3,4]' * * 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,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]. * * * */classSolution {public:inttriangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int res =0;for (int i =2; i <nums.size(); ++i) {int l =0, r = i -1;while (l < r) {if (nums[l] +nums[r] >nums[i]) { res += r - l;--r; } else {++l; } } }return res; }};