611. Valid Triangle Number

#### QUESTION:

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.

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
``````

Example 2:

``````Input: nums = [4,2,3,4]
Output: 4
``````

Constraints:

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

#### SOLUTION:

``````class Solution {
func triangleNumber(_ nums: [Int]) -> Int {
if nums.count < 3 {
return 0
}
var result = 0
var nums = nums.sorted()
for indexI in 0...nums.count-3 {
for indexJ in indexI+1...nums.count-2 {
for indexM in indexJ+1...nums.count-1 {
if (nums[indexI]+nums[indexJ]<nums[indexM]) {
break
}
if ((nums[indexI]+nums[indexJ] > nums[indexM] && abs(nums[indexI]-nums[indexJ])<nums[indexM])
|| (nums[indexI]+nums[indexM] > nums[indexJ] && abs(nums[indexI]-nums[indexM])<nums[indexJ])
|| (nums[indexM]+nums[indexJ] > nums[indexI] && abs(nums[indexM]-nums[indexJ])<nums[indexI])) {
result+=1
}

}
}
}
return result
}
}
``````