> For the complete documentation index, see [llms.txt](https://code-snippets.hbamithkumara.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code-snippets.hbamithkumara.com/leetcode/problems/601-700/valid-triangle-number.md).

# 611. Valid Triangle Number

### Description

Given an integer array `nums`, return *the number of triplets chosen from the array that can make triangles if we take them as side lengths of a triangle*.

### Constraints

* `1 <= nums.length <= 1000`
* `0 <= nums[i] <= 1000`

### Approach

### Links

* Binarysearch
* GeeksforGeeks
* [Leetcode](https://leetcode.com/problems/valid-triangle-number/)
* ProgramCreek
* YouTube

### **Examples**

{% tabs %}
{% tab title="Example 1" %}
**Input:** nums = \[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
{% endtab %}

{% tab title="Example 2" %}
**Input:** nums = \[4, 2, 3, 4]

**Output:** 4
{% endtab %}
{% endtabs %}

### **Solutions**

{% tabs %}
{% tab title="Solution 1" %}

```java
/**
 * Time complexity : 
 * Space complexity : 
 */

class Solution {
    public int triangleNumber(int[] nums) {
        if(nums == null || nums.length < 3) {
            return 0;
        }
        Arrays.sort(nums);
        int count = 0;
        for(int i = nums.length-1; i >= 2; i--) {
            int l = 0, r = i-1;
            while(l < r) {
                if(nums[l]+nums[r] > nums[i]) {
                    count += r-l;
                    r--;
                } else {
                    l++;
                }
            }
        }
        return count;
    }
}
```

{% endtab %}
{% endtabs %}

### **Follow up**

*
