forked from rubythonode/javascript-problems-and-solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalid-triangle-number.js
45 lines (40 loc) · 921 Bytes
/
valid-triangle-number.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* 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,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].
*/
/**
* @param {number[]} nums
* @return {number}
*/
const triangleNumber = nums => {
let count = 0;
nums.sort((a, b) => a - b);
for (let k = nums.length - 1; k > 1; k--) {
for (let i = 0, j = k - 1; i < j; ) {
if (nums[i] + nums[j] > nums[k]) {
count += j - i;
j--;
} else {
i++;
}
}
}
return count;
};
export { triangleNumber };